Функция get_adjacent_post и ее использование в WordPress

Дата публикации:Август 17, 2013

Функция get_adjacent_post позволяет получить либо предыдущую запись, либо следующую. Это особенно полезно для сайтов портфолио, когда необходимо вывести на экран тизер (например, миниатюру) предыдущей или следующей записи. Именно этот эффект можно видеть в популярной теме Practica Portfolio, которая продается на рынке ThemeForest.

Чтобы посмотреть на этот эффект в действии, откройте тему Practica, после чего перейдите к отдельному пункту портфолио – скажем, к Tribe of Circle. Справа от него вы увидите несколько миниатюр со стрелочками вперед и назад. Именно здесь и применяется функция get_adjacent_post.

practica_navigation

Как работает эта функция?

Функция должна использоваться в пределах цикла. Ее использование имеет смысл, если ваши записи выводятся в хронологическом порядке (если записи сортируются по значению произвольных полей, то эта функция не подойдет).

Функция имеет следующий вид:

<?php get_adjacent_post( $in_same_cat, $excluded_categories, $previous ) ?>

Принимаемые аргументы:

  • $in_same_cat  (логический) – следует ли брать соседние записи из одной и той же рубрики. По умолчанию: false.
  • $excluded_categories (строковый) – ID рубрик, которые требуется исключить. По умолчанию: ».
  • $previous (логический) – следует ли получать предыдущую запись. По умолчанию: true.

Функция возвращает:

  • Объект записи WP_Post, если все завершилось успешно.
  • null, если глобальная переменная $post не задана.
  • пустую строку, если не существует соответствующих записей.

Пример использования

Допустим, нам необходимо получить предыдущий пост и следующий пост, сохранив все их данные в набор переменных.

$prev = get_adjacent_post(true,'',true); 
$next = get_adjacent_post(true,'',false);

Теперь мы можем вывести информацию для следующей/предыдущей записи (пример для предыдущей записи):

// вывод контента
echo $prev->post_content;
 
//вывод заголовка
echo $prev->post_title;
 
//вывод миниатюры размером 68x68
echo get_the_post_thumbnail($prev->ID, array(68,68, true) );

То же самое можно реализовать и для следующей ($next) записи.

Еще один простой вариант использования функции:

<?php
$previousPost = get_adjacent_post(true, "", true));
$nextPost = get_adjacent_post(true);
?>
 
<?php if($previousPost) : ?>
    <a href="<?php echo get_permalink($previousPost->ID)?>">&laquo; Previous post</a>
<?php endif; ?>
 
<?php if($nextPost) : ?>
    <a href="<?php echo get_permalink($nextPost->ID)?>">Next: <?php echo $next->post_title; ?> &raquo;</a>
<?php endif; ?>

Здесь мы выводим ссылку на предыдущий пост (без заголовка) и ссылку на следующий пост (с заголовком). Если какой-либо из них не существует, то будет отображена только одна ссылка.

Поделиться

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.