Intereting Posts
Отключенный визуальный редактор и WordPress продолжают добавлять строки в мой код Ошибка формирования массива Future_to_publish в postmeta Как я могу скрыть и отобразить элементы автоматически? Включить php-файл из functions.php только на домашнюю страницу Ссылка на профиль форума пользователя с их комментария Какой крюк добавить при начале загрузки WordPress Пользовательские темы «Просмотр изменений» не работает для ранее опубликованных сообщений Получить дату числовой и отдельной? Как предотвратить добавление кэшированных сообщений в кеш? Возможности WP для добавления медиа, использования медиа, но не редактирования их Добавить определенное слово в ссылку по умолчанию по умолчанию Как упорядочить и отсортировать галерею изображений Shortcode не работает с post counter Текстовый виджет для отображения полей базы данных на основе сообщений

Использование previous_post_link и next_post_link для округления последовательности сообщений

Для одного настраиваемого типа сообщений я использую before_post_link и next_post_link с простыми стрелками. (Хотя текстовые стрелки показаны здесь, в действительности я использую графику с текстом, скрытым с помощью CSS.) Код:

<nav class="arrowNav"> <div class="nav-previous"> <?php previous_post_link('%link', '«'); ?> </div> <div class="nav-next"> <?php next_post_link('%link', '»'); ?> </div> </nav> 

Это отлично работает, за исключением случаев с краями. Мне бы хотелось, чтобы сообщения обходили вокруг: то есть для первого сообщения я хотел бы, чтобы предыдущий_post_link ссылался на последнее сообщение, а для последнего сообщения next_post_link ссылался на первое сообщение. По умолчанию для обоих случаев значение по умолчанию равно null. Как я могу проверить первый и последний статус сообщения и создавать ссылки для каждого?

Solutions Collecting From Web of "Использование previous_post_link и next_post_link для округления последовательности сообщений"

Добавьте следующие пользовательские функции в файл functions.php и вместо вызовов функции previous_post_link и next_post_link вызовите пользовательские функции custom_next_post_link и custom_previous_post_link соответственно.

  function custom_adjacent_post_link( $format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true ) { if ( $previous && is_attachment() ) $post = get_post( get_post()->post_parent ); else $post = get_adjacent_post( $in_same_cat, $excluded_categories, $previous ); if ( ! $post ) { $post = ''; $args = 'posts_per_page=1&orderby=date&ignore_sticky_posts=1'; if($previous) $args .= '&order=DESC'; else $args .= '&order=ASC'; $the_query = new WP_Query( $args ); while ( $the_query->have_posts() ) : $the_query->the_post(); $post = get_post(get_the_ID()); endwhile; wp_reset_postdata(); } $title = $post->post_title; if ( empty( $post->post_title ) ) $title = $previous ? __( 'Previous Post' ) : __( 'Next Post' ); $title = apply_filters( 'the_title', $title, $post->ID ); $date = mysql2date( get_option( 'date_format' ), $post->post_date ); $rel = $previous ? 'prev' : 'next'; $string = '<a href="' . get_permalink( $post ) . '" rel="'.$rel.'">'; $inlink = str_replace( '%title', $title, $link ); $inlink = str_replace( '%date', $date, $inlink ); $inlink = $string . $inlink . '</a>'; $output = str_replace( '%link', $inlink, $format ); $adjacent = $previous ? 'previous' : 'next'; echo apply_filters( "{$adjacent}_post_link", $output, $format, $link, $post ); } function custom_previous_post_link($format='&laquo; %link', $link='%title', $in_same_cat = false, $excluded_categories = '') { custom_adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, true); } function custom_next_post_link($format='%link &raquo;', $link='%title', $in_same_cat = false, $excluded_categories = '') { custom_adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, false); } 

Принятый ответ работает, но, вероятно, должен был использовать get_posts () вместо целого wpquery и loop:

  if ( ! $post ) { $args = array('posts_per_page'=> 1, 'orderby'=> 'date', 'ignore_sticky_posts' => 1 ); if($previous) $args['order']='DESC'; else $args['order']='ASC'; $adjposts = get_posts($args); $post = $adjposts[0]; } 

Как правило, вы не можете использовать wpquery, если вам это не нужно. В полном объеме, в любом случае, Виноду Далви.