Похожие статьи в wordpress без плагинов с использованием категорий блога
После того как пользователь попадает на ваш блог желательно задержать его внимание как можно дольше. Прочитав одну статью, почему бы не показать ему еще несколько, которые были бы интересны – да, я говорю о связных (похожих) постах (related posts). В одном из прошлых постов я рассказывал как сделать оформление записи wordpress по типу того, что вы можете видеть в моем блоге, где после текст идет перечень категорий, тегов, а также ссылки на статьи блога, которые еще можно почитать. Реализовано это все с помощью плагина Simple tags для WordPress. Сегодня предлагаю ознакомиться с другим методом.
Принцип отбора похожих статей с помощью модуля Simple tags основывается на использовании одинаковых тегов (tags) в постах. Но, допустим, у вас простой блог, где тегов либо мало, либо они не используются вовсе – что же делать тогда? – очень просто, попробуем вывести похожие статьи блога, но по категориям, а точнее по ID категории.
Для этого открываем файл функций functions.php куда добавляем следующий код:
/** * related post with category * @param: int $limit limit of posts * @param: bool $catName echo category name * @param: string $title string before all entries * Example: echo fb_cat_related_posts(); */ if ( !function_exists('fb_get_cat_related_posts') ) { function fb_get_cat_related_posts( $limit = 5, $catName = TRUE, $title = '<h3>Recent Pages</h3>' ) { if ( !is_single() ) return; $limit = (int) $limit; $output = ''; $output .= $title; $category = get_the_category(); $category = (int) $category[0]->cat_ID; if ( $catName ) $output .= __( 'Kategorie: ' ) . get_cat_name($category) . ' '; $output .= '<ul>'; $args = array( 'numberposts' => $limit, 'category' => $category, ); $recentposts = get_posts( $args ); foreach($recentposts as $post) { setup_postdata($post); $output .= '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>'; } $output .= '</ul>'; return $output; } }
Если файла не было или он пустой, то не нужно его создать и добавить вокруг кода теги вначале <?php и в конце ?> (как правило, они уже есть).
Теперь заходите в файл темы единичной записи single.php и в нужном месте шаблона добавляете код отображения похожих статей:
<?php echo fb_get_cat_related_posts(); ?>
Теперь что касается самого кода – это базовый пример, который я нашел в интернете, но его можно расширить и модифицировать. Изначально имеется 3 переменных:
- $limit (int) – количество отображающихся постов
- $catName (bool) переменная типа TRUE или FALSE отвечающая за отображение категории, которая применялась для выборки похожих статей.
- $title (string) – HTML текст, который отображается перед списком постов, чаще всего используется как заголовок.
Для своей задачи я немного расширил базовый код следующими конструкциями (это полезно тем, кто понимает что и зачем я дальше делаю, все остальные могут использовать пример кода выше).
1. Во-первых, в начале добавил перменную:
$curp = get_the_ID();
Она считывает ID текущего поста (поскольку задается отображение в файле single.php).
2. Второй шаг – для сравнения я брал вторую по счету категорию из списка для поста, а не первую. Разумеется нужно было проверить, существует ли вторая непустая категория. В моем случае этого требовало поставленная задача.
$category = get_the_category(); if ($category[1]->cat_ID != NULL) { $category = (int) $category[1]->cat_ID; } else { $category = (int) $category[0]->cat_ID; }
3. Также я добавил сравнение для похожих записей с текущим постом, дабы не было ссылки на себя самого:
$recentposts = get_posts( $args ); foreach($recentposts as $post) { if ($post->ID != $curp) { setup_postdata($post); $output .= '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>'; } }
Здесь есть один нюанс, который можете доработать – если из 5-ти постов, указанных в лимите, один совпадает с текущей статьей, то получается 4 итоговых ссылки. Поэтому, скорее всего, нужно считывать количество постов «$limit + 1″, после чего выводить только 5 первых (если не было совпадения). В целом исходных код можете править как пожелаете – не отображать заголовок, если не было похожий статей и т.п.
Если вам нужно продвинуть сайт, но вы в этом не разбираетесь, – SEO специалист с опытом работы и успешными проектами должен помочь решить проблему.
LuckyStar’s blog : только лучшие кликовые спонсоры, мониторинг и новости буксов, матриц, партнерок. Рефбек до 100% и полная поддержка пользователей.
Собрались отдохнуть в Европе, хочется тишины и покоя, для вас курортные города Чехии будут весьма хорошим выбором, там можно отдохнуть душой и телом, да и не дорого.
Комментариев - 16 к статье “Похожие статьи в wordpress без плагинов с использованием категорий блога”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Добавление миниатюры (thumbnail) в RSS для wordpress
- Category SEO Meta Tags – МЕТА данные для категорий и тегов
- 10 плагинов для админ панели WordPress
- LinkGator.ru – биржа вечных ссылок и статей
- Смена рубрики и массовое редактирование wordpress постов
- Paylicense – хостинг с широким спектром услуг
- WP-RecentComments – плагин и виджет последних комментариев
- Безопасность (4)
- Видео (5)
- Возможности (58)
- Начинающим (18)
- Новости (20)
- Оптимизация (13)
- Плагины (66)
- Сервисы (14)
- Хаки и секреты (43)
- Шаблоны (13)
- Записи и посты wordpress, оформление записи
- 17 полезных приемов и хаков для WordPress
- Обновление WordPress подробно для начинающих
- Ссылка читать далее в wordpress – тег more
- Как добавить дополнительные кнопки в редактор WordPress
- Что нового в WordPress 3.1
- Похожие статьи в wordpress без плагинов с использованием категорий блога
- Блог про смартфоны
- Seleckis.lv — Журнал Никиты Селецкого
- Блогинг в стиле web 2.0
- Достопримечательности Львова
- Про блоги для блоггеров
- WordpressPlugins.ru
- Ттелефон Explay Titan в Связном
- Ericsson и планка скорости
- Новая линейка от HTC
- Dr.Web Light 7 для Android
- Самый популярный сервис платежей – Яндекс.Деньги
- Моделирование. Этапы моделирования.
- Шопинг в Европе и требуемые документы
- Последняя версия Google Chrome вышла с ошибкой
- Порядка 70 процентов не доводят покупки в сети Интернет до конца
- Рекламу в социальных сетях автоматизирует сервис AdCenter
- Тестирование новой разработки Интернет-агентства Registratura.ru

Оцените статью: 


Категории:
Теги:
чтобы в результаты поиска не входил текущий пост нужно просто в аргументах добавить post__not_in
$args = array(
‘numberposts’ => $limit,
‘category’ => $category,
‘post__not_in’=>array($current_post_ID)
);
http://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters
ct, спасибо за уточнение, так, конечно, намного красивее получается код.
Добрый вечер автору! Вопрос немного не по теме , но подскажите мне, пожалуйста, какой плагин на ВП можно использовать для вывода новостей не на главную страницу? Заранее спасибо.
Сергей, для этих целей вам подойдет плагин Exclude categories позволяющий исключать категории с главной и RSS.
Прошу прощения за спам… но я проставил все коды что у вас в статье но так и не получается избавиться от ссылки на этот же пост (пример allremont59.ru/dizayn-domashnego-kabineta )
Серж, я бы еще разок внимательнее «прошелся» по кодам и посмотрел все ли правильно установлено. По идее, должно работать, т.к. я у себя же и тестировал.
У меня сработал код Tod’a, но метод ct не дал результата. Не могли бы вы подсказать, как можно реализовать нечто подобное для категории (условно – «галерея») со статьями с единичным изображением и описанием к нему, только чтобы выводился список статей из другой категории, в которых вставлено то же самое изображение, со ссылкой или без ссылки на статью в «галерее» (нечто вроде «ссылка на это изображение имеется в следующих статьях»).
lucky, по вопросу я бы поискал подходящий плагин, так сложно подсказать сразу, не совсем уловил суть. Можно также найти сразу шаблон под галереи – обычно в них предусмотрены разные тематические штуки.
Приветствую. Ворошу свой сайтик, добавляя новые примочки, ведь прелесть сайта в итоге выливается не в чем ином как в мелочах. Проблема следующего порядка, каким образом исключить некоторые категории из выдачи данным хуком (хаком).
Вадим, это нужно разбираться в php коде примера. Переменная $category считывает текущую категорию и перед тем как перейти к работе нужно проверить не равна ли она тем категориям, которые вы хотите исключить. То есть добавляем в код условие if.
а!.. ну тогда все просто. я то думал тут программирование знать надо, а тут всего лишь if
сарказм, так сказать, но все таки из меня программер не очень.
в итоге я строчку:
if ($category[1]->cat_ID != NULL) {
заменил на if ($category[0]->cat_ID != XX && $category[0]->cat_ID != XX) {
где ХХ категории которые я бы не хотел видеть в отображении.. в итоге я указываю категорию (собственно ключевую), и минуя все категории (я их вместо ХХ указал штук 20) она выдаёт мне то что нужно. криво, косо… но работает
появилась другая проблема.. в отображении самой новости тоже выводяться рубрики (категории)… но вместе с нужными выводятся и «рабочие» рубрики.. как их убрать.. может подскажете?
Вадим, видимо, опять нужно гуглить и разбираться. Первым делом найти функцию. которая выводит список рубрик (есть несколько вариантов), во-вторых, посмотреть какими параметрами обладает функций, возможно там можно что-то подправить. Хотя, не уверен можно ли так сделать.
Спасибо за пост, давно искал как реализовать вывод похожих постов без плагина… а то если разобраться – ведь ничего сложного, а так плагинов придется понаставить, что их больше 20 штук набирается
Интересно и доступно. Спасибо автору!
А можно как-нибудь выводить список возможных подрубрик? допустим пост в определенной подрубрике и на странице поста выводились ссылки на эту подрубрику