Начиная с версии 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
Советуем прочитать:
Скоро открытие МакДональдс (McDonald’s) в Пятигорске (6.8)
Скоро открытие МакДональдс (McDonald’s) в Пятигорске (6.7)
Хотя посты абсолютно одинаковые, и ссылка идет на один и тот же пост, но результаты похожести как видно разные почему-то, что за глюк? Неужели я такой один))) Что у меня за дела творятся, никто помочь не может(
А какой шаблон использовать, чтобы сделать как увас? Какие коды прописать?
В настройках плагина
до-после связанных постов:
в первом поле
во втором поле:
До-после каждого связанного поста:
До-после выдержки:
На тот момент особо не старался, делал все атрибутами style, но в идеале лучше, конечно же, задавать id и прописывать это CSS стилями.
С html тегами все понятно, я имел виду какие php коды нужно прописывать.
— это url поста,
— это закаловок поста, а как прописать php код, чтобы вывести краткое описание поста?
Насчет кода это вопрос к разработчикам плагина, а не ко мне. Я поставил в настройках плагина «Показывать выдержку» и настроил ее, вот и все.
Спасибо, разобрался. Нужно было поставить «Показать выдержку?».