Статьи

Внутрішня перелінковка в WordPress без використання плагінів

Існує багато плагінів для внутрішньої перелінковки, але іноді використовувати їх недоцільно тому  вони споживають багато ресурсів і не завжди гнучко налаштовуються, на щастя існує спосіб створити внутрішню перелинковку без використання плагінів
Існує багато плагінів для внутрішньої перелінковки, але іноді використовувати їх недоцільно тому вони споживають багато ресурсів і не завжди гнучко налаштовуються, на щастя існує спосіб створити внутрішню перелинковку без використання плагінів! Завдяки цьому способу Ви можете вивести попередні x-записів з рубрики де опубліковано пост.

Щоб зробити таку перелинковку Вам потрібно додати наступний код в файл single.php (в папці Вашої теми) в те місце де Ви хочете вивести "Попередні записи":

<? Php function show_previous_posts_from_category ($ the_post_id, $ the_category_id = 0, $ post_num) {$ num = 0; global $ wpdb; $ Sql ​​= "SELECT wposts. * FROM $ wpdb-> posts wposts LEFT JOIN $ wpdb-> term_relationships ON (wposts.ID = $ wpdb-> term_relationships.object_id) LEFT JOIN $ wpdb-> term_taxonomy ON ($ wpdb-> term_relationships .term_taxonomy_id = $ wpdb-> term_taxonomy.term_taxonomy_id) WHERE $ wpdb-> term_taxonomy.taxonomy = 'category' AND $ wpdb-> term_taxonomy.term_id = '$ the_category_id' AND wposts.post_status = 'publish' AND wposts.post_type = ' post 'AND wposts.ID <' $ the_post_id 'ORDER BY wposts.ID DESC LIMIT $ post_num "; $ Result = $ wpdb-> get_results ($ sql, OBJECT); global $ post; ?&gt; <Ul> <? Php foreach ($ result as $ post) {setup_postdata ($ post); ?&gt; <Li> <a href="<?php the_permalink() ?&gt; "rel =" bookmark "> <? Php the_title (); ?&gt; </a> </ li> <? Php $ num ++; $ Save_ids [] = $ post-> ID; } If ($ num <$ post_num ||! $ Result) {$ need_more = $ post_num- $ num; $ Save_ids [] = $ the_post_id; $ Save_ids = join ( ',', $ save_ids); $ More_posts = get_posts ( "numberposts = $ need_more & category = $ the_category_id & exclude = $ save_ids"); foreach ($ more_posts as $ post) {setup_postdata ($ post); ?&gt; <Li> <a href="<?php the_permalink() ?&gt; "rel =" bookmark "> <? Php the_title (); ?&gt; </a> </ li> <? Php}}?> </ Ul> <? Php}?> <? Php $ the_cat = get_the_category (); $ The_cat_id = $ the_cat [0] -> cat_ID; show_previous_posts_from_category ($ post-> ID, $ the_cat_id, 5); wp_reset_query (); ?>

У 51 рядку змінюється кількість виведених постів, за замовчуванням виводиться 5 попередніх постів.

По мимо того що цей спосіб використовує набагато менше ресурсів ніж аналогічні плагіни, він також більш логічно перелінковивают всі сторінки. У Вас не вийде така ситуація що на деякі сторінки будуть 1-2 посилання, а на інші по 10 посилань, при використанні цього способу на кожну запис у Вас завжди буде по 5 посилань! Також плюсом можна назвати і постійність посилань, тобто вони не буду змінюватися при появі нових записів.

Приклад такої перелинковки Ви можете спостерігати на цьому блозі 😉
За даний спосіб величезне спасибі блогу Dimox'a і користувачеві Kama (який оптимізував код).

Існує ще один спосіб створити внутрішню перелинковку без використання плагінів, але у нього інший принцип роботи. Перелінковка створюється за допомогою виведення схожих записів, схожі записи знаходяться завдяки однаковим тегам (якщо Ви не використовуєте теги, то цей спосіб не для Вас!).

<? Php $ tags = wp_get_post_tags ($ post-> ID); if ($ tags) {$ tag_ids = array (); foreach ($ tags as $ individual_tag) $ tag_ids [] = $ individual_tag-> term_id; $ Args = array ( 'tag__in' => $ tag_ids, 'post__not_in' => array ($ post-> ID), 'showposts' => 5, // Кількість записів для виведення. 'Caller_get_posts' => 1); $ My_query = new wp_query ($ args); if ($ my_query-> have_posts ()) {echo '<h3> Схожі записи </ h3> <ul>'; while ($ my_query-> have_posts ()) {$ my_query-> the_post (); ?&gt; <Li> <a href="<?php the_permalink() ?> "rel =" bookmark "title =" Постійне посилання на <? Php the_title_attribute ();?> "> <? Php the_title (); ?&gt; </a> </ li> <? Php} echo '</ ul>'; }}?>

Мінусом такого способу є те що деякі записи можуть залишитися взагалі без посилань на них сторінок, адже іноді теги унікальні і знаходяться тільки в однієї або декількох записів, з цього ці сторінки залишаться без уваги 🙁

Загалом можу сказати одне - ІМХО 1 спосіб це найкращий варіант внутрішньої перелинковке блогів на WordPress тому він споживає дуже мало ресурсів, всі записи отримують по 5 посилань (не одна запис не залишиться без уваги), СДЛ'ьность - завдяки цьому способу користувач може знайти інші цікаві для його записи (тому що записи виводяться з тієї ж рубрики що і сам пост), в загальному хороший він на всі 100% 😉 РЕКОМЕНДУЮ!

ID DESC LIMIT $ post_num "; $ Result = $ wpdb-> get_results ($ sql, OBJECT); global $ post; ?
Gt; <Ul> <?
Php foreach ($ result as $ post) {setup_postdata ($ post); ?
Gt; <Li> <a href="<?
Php the_permalink() ?
Gt; "rel =" bookmark "> <?
Php the_title (); ?
Gt; </a> </ li> <?
Gt; <Li> <a href="<?

Новости