3 действенных способа внутренней перелинковки сайта

После публикации плагина социальных голосований WP Social Votes у некоторых пользователей возникли проблемы с размещением и выводом самого голосования. Оно выводилось не под статьей, как хотелось бы многим, а после блока похожих записей. Это связано с использованием различных плагинов, которые получали приоритет перед плагином голосования.

Думаю в следующей версии мы попытаемся это исправить. Добавим функцию, с помощью которой голосование можно будет выводить непосредственно в посте. А пока можно воспользоваться тем методом, который мы рассмотрим в этом посте. Это вывод похожих или случайных записей без использования плагина.

Автоматическая перелинковка сайта на wordpress без плагинов

На самом деле я давненько планировал этот пост, да все как-то откладывал, а тут как раз повод. Рассказывать о необходимости вывода таких записей смысла нет, Вы все прекрасно понимаете мощь перелинковки. Конечно, вывод в конце записи блока ссылок это не самый лучший вариант перелинковки, но таки полезный, очень даже полезный. В общем, поехали 😉

Вывод записей из определенной категории

Этот способ будет выводить записи из категории в которой находится читаемая статья. Т.е. если этот пост, который Вы сейчас читаете, из категории «WordPress«, то и список похожих и рекомендуемых записей в конце статьи будет из той же категории.

Очень рекомендую воспользоваться именно этим способом. Благодаря ему из такого рода перелинковки извлекается самый сок. Перелинковка, в отличие от других подобных методов, которые определяют похожие записи по тегам или вообще выводят записи в случайном порядке, становится … стабильной, что-ли, равномерной. Каждая статья блога получает равное количество ссылок с других статей.

<h3>Другие записи из категории "<?php the_category(', ') ?>":</h3>
<?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;
?>
<ul>
<?php
foreach ($result as $post) {
setup_postdata($post);
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></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);
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>" rel="bookmark"><?php the_title(); ?></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, 10);
wp_reset_query();
?>

Обратите внимание на предпоследнюю строчку с цифрой 10. Это количество выводимых записей.

Вывод записей по тегам

Или меткам, это кому как удобней, но не так важно. Смысл прост: предлагаемый код будет подбирать похожие записи по меткам. По такому же принципу работают многие популярные плагины. Если меток нет, то и блок выводиться не будет.

Минус этого способа я затронул выше. Такой метод перелинковывает записи совсем не равномерно. Так одна запись может получить несколько десятков ссылок с других записей, а другая всего пару или вообще останется без них.

<?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'=>10,
'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();
?>
<li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php
}
echo '</ul>';
}
}
?>

В строчке ‘showposts’=>10, меняем цифру на необходимое нам количество выводимых записей.

Подбор и вывод записей случайным образом

Следующий код совсем без головы :). Он просто, абсолютно ни о чем не думая, случайным образом выводит записи и само собой эти записи зачастую не имеют никакого отношения к посту, под которым они выводятся.

Но это нельзя назвать минусом. Это особенность, и не редко такую особенность тоже можно использовать, сделав ее полезной.

<h3>Случайные записи</h3>
<ul>
<?php $posts = get_posts('orderby=rand&numberposts=10');
foreach($posts as $post) { ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php } ?>
</ul>

В строчке numberposts=10 определяем количество выводимых записей.

Все три указанных кода необходимо вставить в нужное Вам место файла одиночной записи вашей темы, обычно это single.php (Дизайн -> Редактор -> Single.php). Учитывая что предшествовало этому посту, я имею ввиду голосование, то коды можно разместить сразу после него, т.е. после:

<div>
 <?php sv_show_vote() ?>
 </div>

Что мы имеем? Мы имеем отличного качества перелинковку, особенно в первом способе. Мы имеем снижение нагрузки на блог, так как отказались от плагинов. Уж не знаю насколько значительно это снижение, но оно есть. И мы решили проблему вывода голосования, которое съезжало вниз, под блоки похожих записей. День прожит не зря 🙂

А еще можно использовать все три способа, разместив блоки ссылок в панели вкладок.

Удачи Вам, друзья, успехов!

p.s. кстати, недавно был АП тИЦ. Как у Вас успехи?

Комментарии

48 на запись "3 действенных способа внутренней перелинковки сайта"
  1. Оп,  ну статья порадовала ) спасибо большое! так как в это время как рас и искал как добавить после поста перелинковку …:)

  2. а вот еще такое как сделать чтобы выводилась эта запись «Другие записи из категории «WordPress»:» ?  Потому что у меня ее нету(

  3. Tettie says:

    Я почему-то думала, что перелинковка и вывод похожих записей — это все-таки разные вещи.

    • Изначально, конечно, миссия похожих записей заинтересовать читателя, провести его на 2, 3 и т.д. страницы. Но при удачном раскладе этот блок может сослужить хорошую службу в плане перелинковки. Первый вариант из представленных очень хорош именно в плане перелинковки.

  4. Не совсем понял о какой точке речь идет? Маркированный список имеете ввиду?

  5. Спасибо, что читаете 😉

  6. Сергей says:

    Я часто читаю вас. Но я полный чайник.То, что вы описываете — нужно, но куда это ставить — для меня, тёмный лес. Или у вас только для продвинутых? Если — нет, то пожалуйста, по подробнее — конечно, если не трудно.
    С уважением, СергеЙ.

  7. Нет, это два абсолютно разных варианта. Первый выводит записи из одной тематичной рубрики, второй выводит по меткам, т.е. может вывести скажем 5 записей из разных рубрик.

  8. Спасибо за инфу. Очень в тему.
    Я тут обновился до последней версии WordPress и у меня как раз слетел плагин, который отвечал эту перелинковку. Благодаря Вам удалось быстро починить. Спасибо.

  9. Код уже содержит все необходимое и будет выведен маркированным списком. Просто вставьте код.

  10. У меня вывод статей после постов по релевантности. Думаю может тоже сделать их по категориям. Но боюсь, не полетят ли в тартарары мои позиции в поиске.

    • Первые два варианта тоже работают по принципу релевантности, так как первый выдает только посты из той же категории, что и сама статья, а второй выводит посты по меткам.

      Вопрос в том, каким способом работает вывод у Вас. Я так думаю по меткам.

  11. Дмитрий Страхов says:

    Спасибо! Воспользовался.

  12. Инна, это особенность Вашей темы. Файл стилей Вашей темы (http://ege-ok.ru/wp-content/themes/zeecorporate/style.css ), строка 40, строчка: ul, ol { list-style: none; }. Это запрет на стилевое строение маркированного списка. Если ее удалить, то и в боковой панели вашего блога появятся точки, т.е. дизайн исказится.

  13. И правильно, он лучший из всех представленных 😉

  14. Все три указанных кода необходимо вставить в нужное Вам место файла одиночной записи вашей темы, обычно это single.php (В админ-панели: Дизайн -> Редактор -> Single.php)

  15. Manh says:

    Спасибо, Сергей. 

  16. Привет! То, что плагины перекрывают очередность вывода — это да! 
    Сереж, и что? Реально можно отключить плагин YARPP? Или удалить его совсем? Правда там одна хорошая функция присутствует — название поста и рядом выдержка текстовая, у меня настроено на 10 слов…  

  17. Да, вот еще важный вопрос: все эти связи, выстроенные с помощью плагина, они ведь где-то учтены в недрах ПС(передают веса друг другу и тп). Если удалить плагин, то эти связи разрушатся и создадутся новые. Как скажется эта перетурбация на позициях отельных постов и всего блога в целом?

    • Конечно. По-разному может сказаться. Может улучшиться, может ухудшиться. Эксперименты никто не отменял. Потому что-то меняем, отслеживаем изменения, если есть ухудшения, возвращаем на место.

  18. Max says:

    Сергей, в моем блоге много фотографии,  как мне реализовать вывод миниатюр? а под ними уже ссылки. 🙂 если можно на примере первого кода

  19. Полезный пост. Добавил в интересно.

  20. chelseateam says:

    перелинковка полезнее когда она просто вливается в текс статьи, а если ещё и таким образом что прям так и хочется кликнуть и прочитать другую статью, то это уже верх пилотажа!!! 

  21. надеюсь поможет..

  22. У Вас там все необходимое есть. Просто переместите код перед закрывающий тег /div, сейчас он у вас насколько вижу размещен после. Т.е. после перед . Если конечно я все вижу…

  23. Подписалась на обновления блога:) попозже вернусь и наверное засяду тут у вас надолго:))

  24. Как раз сейчас работаем над плагином перелинковки, который отличается от всех существующих используемыми методами. Схемы рисовать не придется.
    После его завершения пройдет еще какое-то время в тестах, думаю через месяц, примерно, буду анонсировать его. Стоит подождать 😉

  25. Chara says:

    спасибо за статью. очень помогла

  26. Возможно ли реализовать первый метод таким образом, чтобы отображались предыдущие  И следующие записи из этой категории? Допустим 3 записи раннее опубликованные и 3 следующие по времени публикации.
    Мне кажется такой метод был бы оптимальней, т. к. часто публикации имеют определённый порядок, так сказать «сериал». Таким образом ссылки на записи из одной категории будут служить читателю также навигацией, чтобы перейти к следующему посту

  27. Виолетта Марич says:

    Сергей, у меня частично пропали комментарии — я оставила пока только «Похожие записи по меткам. Что делать?

  28. Виталий says:

    Вопрос Антона Алпутова не решился? Вариантов нет? Я сам ищу такой метод.
    Цитирую «Возможно ли реализовать первый метод таким образом, чтобы отображались предыдущие И следующие записи из этой категории? Допустим 3 записи раннее опубликованные и 3 следующие по времени публикации.»

Спасибо, что оставили свой комментарий

banner