3 действенных способа внутренней перелинковки сайта
После публикации плагина социальных голосований WP Social Votes у некоторых пользователей возникли проблемы с размещением и выводом самого голосования. Оно выводилось не под статьей, как хотелось бы многим, а после блока похожих записей. Это связано с использованием различных плагинов, которые получали приоритет перед плагином голосования.
Думаю в следующей версии мы попытаемся это исправить. Добавим функцию, с помощью которой голосование можно будет выводить непосредственно в посте. А пока можно воспользоваться тем методом, который мы рассмотрим в этом посте. Это вывод похожих или случайных записей без использования плагина.
На самом деле я давненько планировал этот пост, да все как-то откладывал, а тут как раз повод. Рассказывать о необходимости вывода таких записей смысла нет, Вы все прекрасно понимаете мощь перелинковки. Конечно, вывод в конце записи блока ссылок это не самый лучший вариант перелинковки, но таки полезный, очень даже полезный. В общем, поехали 😉
Вывод записей из определенной категории
Этот способ будет выводить записи из категории в которой находится читаемая статья. Т.е. если этот пост, который Вы сейчас читаете, из категории «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. кстати, недавно был АП тИЦ. Как у Вас успехи?
Оп, ну статья порадовала ) спасибо большое! так как в это время как рас и искал как добавить после поста перелинковку …:)
а вот еще такое как сделать чтобы выводилась эта запись «Другие записи из категории «WordPress»:» ? Потому что у меня ее нету(
Перед кодом добавляем вот это:
Другие записи из категории "":
Я почему-то думала, что перелинковка и вывод похожих записей — это все-таки разные вещи.
Изначально, конечно, миссия похожих записей заинтересовать читателя, провести его на 2, 3 и т.д. страницы. Но при удачном раскладе этот блок может сослужить хорошую службу в плане перелинковки. Первый вариант из представленных очень хорош именно в плане перелинковки.
Не совсем понял о какой точке речь идет? Маркированный список имеете ввиду?
Спасибо, что читаете 😉
Я часто читаю вас. Но я полный чайник.То, что вы описываете — нужно, но куда это ставить — для меня, тёмный лес. Или у вас только для продвинутых? Если — нет, то пожалуйста, по подробнее — конечно, если не трудно.
С уважением, СергеЙ.
Сергей, у меня для всех, кто понимает или хочет понять. И я всегда готов помочь, если это требуется. В скобках я указал, куда необходимо вставлять код.
Нет, это два абсолютно разных варианта. Первый выводит записи из одной тематичной рубрики, второй выводит по меткам, т.е. может вывести скажем 5 записей из разных рубрик.
Спасибо за инфу. Очень в тему.
Я тут обновился до последней версии WordPress и у меня как раз слетел плагин, который отвечал эту перелинковку. Благодаря Вам удалось быстро починить. Спасибо.
Здорово, когда в тему 😉
Код уже содержит все необходимое и будет выведен маркированным списком. Просто вставьте код.
У меня вывод статей после постов по релевантности. Думаю может тоже сделать их по категориям. Но боюсь, не полетят ли в тартарары мои позиции в поиске.
Первые два варианта тоже работают по принципу релевантности, так как первый выдает только посты из той же категории, что и сама статья, а второй выводит посты по меткам.
Вопрос в том, каким способом работает вывод у Вас. Я так думаю по меткам.
Спасибо! Воспользовался.
Инна, это особенность Вашей темы. Файл стилей Вашей темы (http://ege-ok.ru/wp-content/themes/zeecorporate/style.css ), строка 40, строчка: ul, ol { list-style: none; }. Это запрет на стилевое строение маркированного списка. Если ее удалить, то и в боковой панели вашего блога появятся точки, т.е. дизайн исказится.
И правильно, он лучший из всех представленных 😉
Все три указанных кода необходимо вставить в нужное Вам место файла одиночной записи вашей темы, обычно это single.php (В админ-панели: Дизайн -> Редактор -> Single.php)
Спасибо, Сергей.
Привет! То, что плагины перекрывают очередность вывода — это да!
Сереж, и что? Реально можно отключить плагин YARPP? Или удалить его совсем? Правда там одна хорошая функция присутствует — название поста и рядом выдержка текстовая, у меня настроено на 10 слов…
К сожалению, я не работал с этим плагином, не скажу… 🙁
Я не работал с этим плагином. Даже, к сожалению, и не знаю… 🙁
Извиняюсь, я имел ввиду любой плагин Related Post. Но уже понял из ответа повыше, что напрочь удалять плагин пока не стоит — сначала посмотреть как отреагируют поисковики. В принципе, что там по категориям выборка, что у вас можно сделать по категориям…
Хочется, убрать как можно больше плагинов.
Да, вот еще важный вопрос: все эти связи, выстроенные с помощью плагина, они ведь где-то учтены в недрах ПС(передают веса друг другу и тп). Если удалить плагин, то эти связи разрушатся и создадутся новые. Как скажется эта перетурбация на позициях отельных постов и всего блога в целом?
Конечно. По-разному может сказаться. Может улучшиться, может ухудшиться. Эксперименты никто не отменял. Потому что-то меняем, отслеживаем изменения, если есть ухудшения, возвращаем на место.
Сергей, в моем блоге много фотографии, как мне реализовать вывод миниатюр? а под ними уже ссылки. 🙂 если можно на примере первого кода
Версия wp какая?
wp 3-3-2
…ммм… пока ничего не придумал. Как что-то «рожу» — сообщу 😉
Спасибо 😉
Полезный пост. Добавил в интересно.
перелинковка полезнее когда она просто вливается в текс статьи, а если ещё и таким образом что прям так и хочется кликнуть и прочитать другую статью, то это уже верх пилотажа!!!
Нет, это нормально.
надеюсь поможет..
У Вас там все необходимое есть. Просто переместите код перед закрывающий тег /div, сейчас он у вас насколько вижу размещен после. Т.е. после
перед . Если конечно я все вижу…
Спасибо большое!
Подписалась на обновления блога:) попозже вернусь и наверное засяду тут у вас надолго:))
Приходите, наливайте кофейку и сидите сколько угодно 🙂
Как раз сейчас работаем над плагином перелинковки, который отличается от всех существующих используемыми методами. Схемы рисовать не придется.
После его завершения пройдет еще какое-то время в тестах, думаю через месяц, примерно, буду анонсировать его. Стоит подождать 😉
Появился уже такой плагин?
Да http://pervushin.com/wp-smart-linker.html
спасибо за статью. очень помогла
Возможно ли реализовать первый метод таким образом, чтобы отображались предыдущие И следующие записи из этой категории? Допустим 3 записи раннее опубликованные и 3 следующие по времени публикации.
Мне кажется такой метод был бы оптимальней, т. к. часто публикации имеют определённый порядок, так сказать «сериал». Таким образом ссылки на записи из одной категории будут служить читателю также навигацией, чтобы перейти к следующему посту
Надо помыслить. Сообщу о результатах.
Сергей, у меня частично пропали комментарии — я оставила пока только «Похожие записи по меткам. Что делать?
Если можно — подробнее, не очень понимаю, как пропали.
Вопрос Антона Алпутова не решился? Вариантов нет? Я сам ищу такой метод.
Цитирую «Возможно ли реализовать первый метод таким образом, чтобы отображались предыдущие И следующие записи из этой категории? Допустим 3 записи раннее опубликованные и 3 следующие по времени публикации.»