Начиная с версии 3.0, WordPress плагин Yet Another Related Posts Plugin включил в себя две новых возможности: кэширование и обработку шаблонов. В данной статье я покажу вам, как можно использовать шаблоны для настройки представления связанных записей.
Предыдущие версии плагина YARPP предлагали довольно ограниченное число способов изменения вида связанных записей. Вы могли устанавливать некоторые HTML-теги, для того чтобы обернуть ими свои записи, а также выбрать, какое количество цитат (если они есть) выводить на экран. Указанного интерфейса вполне хватало большинству пользователей — к слову говоря, приведенные настройки остались и в версии YARPP 3.0.
Однако, вместе с тем появились и новая опция, позволяющая в полной мере проявить свои навыки PHP-кодирования и получить более полный контроль над отображением связанных записей. Указанная опция дает возможность выбирать любые файлы в подкаталоге templates плагина YARPP.
Структура шаблона YARPP
Давайте взглянем на тестовый шаблон, поставляемый вместе с плагином YARPP 3 (yarpp-template-example.php):
<h3>Related Posts</h3> <?php if ($related_query->have_posts()):?> <ol> <?php while ($related_query->have_posts()) : $related_query->the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li> <?php endwhile; ?> </ol> <?php else: ?> <p>No related posts.</p> <?php endif; ?>
Указанный шаблон (а также большинство других шаблонов) состоит из двух базовых частей: (а) что будет выводиться на экран, если связанные записи есть, и (b) что будет выводиться на экран, если связанных записей нет. Проверка на наличие связанных записей находится во второй строке. Если они есть, то мы выводим на экран упорядоченный список и заходим в цикл while, который выполняется до тех пор, пока существуют связанные записи. Для каждой записи мы используем сниппет $related_query->the_post();, который загружает необходимые данные записи и печатает новый пункт списка.
Вы можете заметить, что мы использовали здесь некоторые теги шаблона, такие как the_permalink() и the_title(). Если вы занимались разработкой тем WordPress, то они должны быть вам знакомы. Я затрону их снова чуть позже.
Мощь PHP
Одно неоспоримое преимущество новой системы шаблонов заключается в том, что вы можете напрямую влиять на количество выводимых записей, избегая всех предыдущих структурных ограничений. К примеру, в шаблоне template-list.php мы записываем информацию для каждой связанной записи в массив и затем объединяем строки при помощи функции implode. Таким образом, мы получаем список разделенных запятой значений без любых беспризорных запятых до или после списка, что до сих пор было невозможно.
$postsArray = array(); while ($related_query->have_posts()) : $related_query->the_post(); $postsArray[] = '<li><a href="'.get_the_permalink().'" rel="bookmark">'.get_the_title().'</a></li>'; endwhile;echo implode(', ',$postsArray); // print out a list of the related items, separated by commas
Также вы можете запускать произвольные PHP функции в вашем шаблоне — вплоть до прокрутки другого WP_Query, как это сделано в шаблоне template-random.php: в случае отсутсвия связанных записей на экран будет выведена случайная запись.
Знакомые теги шаблона
Как было замечено ранее, теги, которые мы используем в шаблонах YARPP, являются обычными тегами шаблона, применяющимися в любых шаблонах WordPress. Фактически, любой тег шаблона WordPress будет работать и в цикле YARPP. Вы можете использовать эти теги шаблона для того чтобы выводить на экран цитаты, дату публикации записи, счетчик комментариев, а также некоторые произвольные метаданные. Также в плагине имеются и два собственных тега шаблона, работающих только в пределах цикла YARPP: the_score () и get_the_score (). Как вы и ожидаете, они позволяют напечатать или возвратить число соответствия для конкретной записи.
Стоит отметить, что теги шаблонов других плагинов также будут работать в шаблонах YARPP. Для примера достаточно посмотреть на файл yarpp-template-photoblog.php:
<?php while ($related_query->have_posts()) : $related_query->the_post(); ?> <?php if (function_exists('yapb_is_photoblog_post')): if (yapb_is_photoblog_post()):?> <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php yapb_get_thumbnail(); ?></a></li> <?php endif; endif; ?> <?php endwhile; ?>
В цикле этого шаблона YARPP мы используем теги шаблона другого плагина — Yet Another Photoblog. Если у вас установлен плагин Yet Another Photoblog, вы можете использовать эти шаблоны для отображения миниатюр связанных записей в заголовках. Заметьте, что в примере мы сначала проверяем, является ли каждая связанная запись фотографией, или не содержит ли она yapb_is_photoblog_post(), и затем используем тег шаблона yapb_get_thumbnail() для того чтобы узнать расположение миниатюры.
Шаблоны, появившиеся в YARPP 3.0, позволяют администратору блога по-новому взглянуть на настройку связанных записей.
Перевод статьи: http://mitcho.com/blog/projects/yarpp-3-templates/
функция "Делать перекрёстную перелинковку страниц и сообщений?" думал проблема исчезла, когда порог похожести с 3 на 5 перевел, но проблема появилась опять.
Возникает проблема, дублирует в результатах вывода поста: Вот сам пост: http://times.fireg.ru/?p=1003
Советуем прочитать:
<a>Скоро открытие МакДональдс (McDonald’s) в Пятигорске (6.8)
<a>Скоро открытие МакДональдс (McDonald’s) в Пятигорске (6.7)
Хотя посты абсолютно одинаковые, и ссылка идет на один и тот же пост, но результаты похожести как видно разные почему-то, что за глюк? Неужели я такой один))) Что у меня за дела творятся, никто помочь не может(
А какой шаблон использовать, чтобы сделать как увас? Какие коды прописать?
В настройках плагина
до-после связанных постов:
в первом поле
во втором поле:
До-после каждого связанного поста:
До-после выдержки:
На тот момент особо не старался, делал все атрибутами style, но в идеале лучше, конечно же, задавать id и прописывать это CSS стилями.
С html тегами все понятно, я имел виду какие php коды нужно прописывать.
— это url поста,
— это закаловок поста, а как прописать php код, чтобы вывести краткое описание поста?
Насчет кода это вопрос к разработчикам плагина, а не ко мне. Я поставил в настройках плагина "Показывать выдержку" и настроил ее, вот и все.
Спасибо, разобрался. Нужно было поставить «Показать выдержку?».
=) Как я и предполагал)
Доброго вечера!
Не совсем разобрался я с плагином — где эти параметры, «критерии похожести»? У меня плагин ничего релэйтного не находит, т.е. ничего не выводит кроме фразы «Related Posts:».
И как указать место для вывода этих постов? Ничего не понимаю, так мало настроек…
Место вывода можно устанавливать через related_posts(), но для этого надо в настройках отключать Automatically display:. Там есть подсказка небольшая, что можно также вставлять related_pages() или related_entries() в зависимости от того, к какому типу материалов выводятся связанные записи.
Критерии похожести известны только разработчику плагина. Как я понял, для статьи определяется некоторое число, которое формируется исходя из меток, заголовка статьи и каких-то других факторов, после чего выводятся похожие статьи (сортировка по этому числу, начиная с наибольшего). Раньше можно было подгонять это число, сейчас все делается автоматически.
Убрал все галки в «Automatically display». Поставил ПХП код:
Пишет то же самое — «No related posts».
А вообще у меня в посте только заголовок есть — может, это влияет на отсутствие связанных записей?
Возможно, что из-за отсутствия текста. Либо он работает только для последующих записей, опубликованных уже с момента его активации.
Вчера искал плагин для вывода похожих статей. Нашел вот такой http://wordpress.org/plugins/contextual-related-posts/
В принципе неплохой плагин. Можно настроить алгоритм, стили и т.д. и вроде бы неплохо отображает похожие статьи. Сегодня почитал вашу статью.
Попробовал YARPP. Судя по всему он сейчас у вас стоит?
Часто он работает отлично, а иногда ничего не выводит, несмотря на то, что например в определенной статье полно ключевых слов, встречающихся в других статьях.
Не нашел как отключить цифру похожести, которую он выводит в списке. Нет никаких настроек алгоритма похожести. Нет опции вывода выдержки к миниатюрам. Миниатюры ужимаются «не по умному», т.е. без учета соотношения сторон и выглядят некрасиво.
В целом, если сравнить эти два плагина, yarpp вроде бы чуток более точен, но выводит меньше постов, а иногда вообще ничего не выводит (Скорее всего больше подойдет для блогов, где много статей). Сontextual Related Posts более удобен и настраиваем.
Вообще хороших плагинов, которые ищут похожие статьи в первую очередь по контенту, а не по меткам, рубрикам и заголовкам не так уж много (я например вообще метки почти не использую, а по рубрикам то проще простого вывести похожесть). Возможно знаете какие-нибудь еще плагины из этой серии заслуживающие внимания?
Да, я пользуюсь YARPP уже давно. Тоже сталкивался у него с разными непонятными местами в работе, когда не выводились статьи, но в целом он работает довольно хорошо, правильно определяет тематику и выдает релевантные материалы.
Вывод материалов, конечно, не настолько гибкий, потому что внесешь в код изменения, а плагин обновится и все пропадет — приходится работать с тем, что имеешь, либо не обновлять его вовсе. А обновления у него довольно частые.
YARPP, как мне кажется, хорошо работает в том случае, если много постов. Можно калибровать точность алгоритма, чтобы он выводил более релевантные результаты и не было таких пустот.
Вообще, он ориентируется именно на метки и рубрики, сам контент он слабо анализирует, судя по выдаваемым результатам.
Есть плагин для ручной настройки похожих записей к каждой конкретной записи:
http://wordpress.org/plugins/baw-manual-related-posts/
А так — все остальные плагины ориентируются именно на таксономии — метки, форматы записей, рубрики, а сам контент не анализируют. YARPP является самым популярным и пока что, как мне кажется, самым удобным, как в плане настройки, так и в плане калибровки алгоритма.
Скажите пожалуйста, как мне вывести при помощи этого плагина статьи определенной категории на определенной странице?
а то я вставляю код в нужном мне месте, а он показывает что подобных статей нет
Плагин не предназначен для этого. Если вам надо вывести допустим список постов из определенной категории в определенном месте, например в самом посте через шорткод, то можно воспользоваться этим http://wordpress.org/plugins/list-category-posts/
А если YARP говорит, что похожих статей нет, снизьте порог похожести: зайдите в его настройки, вверху в правом углу «настройки экрана», там галочку «Критерии похожести», после этого у вас появятся опции похожести. Там поставьте в поле «Порог похожести» например 1 или 2.
за List category posts спасибо, то что нужно. буду пробовать
Здравствуйте, Дмитрий! Известен ли Вам плагин или способ с помощью которого возможно выводить различные заголовки связанных статей для разных рубрик?
Есть вот такой плагин: http://www.relatedpostsforwp.com
Позволяет вручную настраивать заголовки. Идет в платной и бесплатной версии.
Вот тут они приводят пример, как изменить с помощью их плагина заголовок связанных записей:
https://www.relatedpostsforwp.com/documentation/change-related-post-title/
Привет. Пересел на YARPP, но столкнулся с такой проблемой, как дублирование ссылок. Например ссылка есть в тексте статьи (поставлена вручную), и потом YARPP ставит ссылку в блоке похожие материалы. Для SEO такое дублирование ссылок противопоказано. Можно ли это подправить ?
Вряд ли можно что-то сделать в таком случае. Он определяет похожие посты по своим алгоритмам. Если только задавать критерий похожести, но он затронет все записи на сайте. Или исключать какую-то определенную рубрику, что, опять же, может быть, не подойдет.