Previous posts link php

get_the_post_navigation() │ WP 4.1.0

Получает ссылки (HTML) на следующую и предыдущую записи. Используется на странице отдельной записи: is_singular(). Хорошо подойдет для навигации между вложениями (прикрепленными картинками).

До версии 4.1. для вывода ссылок на предыдущий и следующий поста, нужно было использовать функции next_post_link() и previous_post_link(). Эта функцию — обертка для этих функций.

Возвращает

Использование

get_the_post_navigation( $args );
  • prev_text(строка)
    Текст который будет показан, как анкор ссылки на предыдущую запись.
    По умолчанию: ‘%title’
  • next_text(строка)
    Текст который будет показан, как анкор ссылки на следующую запись.
    По умолчанию: ‘%title’
  • screen_reader_text(строка)
    Текст (заголовок) блока навигации для.
    По умолчанию: __( ‘Post navigation’ )
  • in_same_term(логический) (WP 4.4)
    true, когда нужно, чтобы ссылка была из текущего элемента указанной в taxonomy таксономии.
    По умолчанию: false
  • excluded_terms(строка/массив) (WP 4.4)
    ID элементов таксономии, который нужно исключить. В виде массива или в строке через запятую.
    По умолчанию: »
  • taxonomy(строка) (WP 4.4)
    Название таксономии, когда $in_same_term = true.
    По умолчанию: ‘category’
  • aria_label(строка) (WP 5.5)
    Значение атрибута area-label=»» для элемента.
    По умолчанию: __( ‘Posts’ )
  • class(строка) (WP 5.5)
    Значение атрибута class=»» для элемента.
    По умолчанию: ‘post-navigation’

Примеры

#1 Ссылки навигации между постами

Выведем ссылки на следующий и предыдущий записи (посты) на отдельной странице типа is_single().

 ' ' . 'Следующая запись ' . '%title', 'prev_text' => ' ' . 'Предыдущая запись ' . '%title', ) ); echo $post_nav; ?>

В результате мы получим такой HTML код:

 

Или так это выглядит в дефолной теме twentyfifteen:

Читайте также:  Php writing config file

prev-next

#2 Добавим title атрибут для ссылок

Этот пример показывает как добавить атрибут к каждой ссылке в блоке. В значении будет лежать заголовок поста и перед ним будет слово Смотрите: : title=»Смотрите: ЗАГОЛОВО_ЗАПИСИ» .

add_filter( ‘next_post_link’, ‘add_title_adjacent_post_link’, 10, 4 ); add_filter( ‘previous_post_link’, ‘add_title_adjacent_post_link’, 10, 4 ); function add_title_adjacent_post_link( $output, $format, $link, $post )< $title = esc_attr( 'Смотрите: '. $post->post_title ); return str_replace( ‘

Код нужно добавить непосредственно перед вызовом get_the_post_navigation() .

Список изменений

С версии 4.1.0 Введена.
С версии 4.4.0 Introduced the in_same_term , excluded_terms , and taxonomy arguments.
С версии 5.3.0 Added the aria_label parameter.
С версии 5.5.0 Added the class parameter.

Код get_the_post_navigation() get the post navigation WP 6.2.2

function get_the_post_navigation( $args = array() ) < // Make sure the nav element has an aria-label attribute: fallback to the screen reader text. if ( ! empty( $args['screen_reader_text'] ) && empty( $args['aria_label'] ) ) < $args['aria_label'] = $args['screen_reader_text']; >$args = wp_parse_args( $args, array( 'prev_text' => '%title', 'next_text' => '%title', 'in_same_term' => false, 'excluded_terms' => '', 'taxonomy' => 'category', 'screen_reader_text' => __( 'Post navigation' ), 'aria_label' => __( 'Posts' ), 'class' => 'post-navigation', ) ); $navigation = ''; $previous = get_previous_post_link( ' return $navigation; >

Cвязанные функции

  • _navigation_markup()
  • get_next_posts_page_link()
  • get_posts_nav_link()
  • get_previous_posts_page_link()
  • get_the_comments_navigation()
  • get_the_comments_pagination()
  • get_the_posts_navigation()
  • get_the_posts_pagination()
  • posts_nav_link()
  • the_comments_navigation()
  • the_comments_pagination()
  • the_posts_navigation()
  • the_posts_pagination()

Источник

Использование

get_previous_posts_link( $label );

Примеры

#1 Запишем ссылку на предыдущие посты в переменную и выведем её на экран

Заметки

Список изменений

function get_previous_posts_link( $label = null ) < global $paged; if ( null === $label ) < $label = __( '« Previous Page' ); >if ( ! is_single() && $paged > 1 ) < /** * Filters the anchor tag attributes for the previous posts page link. * * @since 2.7.0 * * @param string $attributes Attributes for the anchor tag. */ $attr = apply_filters( 'previous_posts_link_attributes', '' ); return sprintf( '%3$s', previous_posts( false ), $attr, preg_replace( '/&([^#])(?![a-z];)/i', '&$1', $label ) ); > >

Cвязанные функции

  • edit_term_link()
  • get_next_posts_link()
  • get_previous_comments_link()
  • get_the_author_posts_link()
  • next_image_link()
  • previous_image_link()
  • the_attachment_link()
  • the_author_link()
  • the_author_posts_link()
  • the_shortlink()
  • wp_register()
  • wp_targeted_link_rel()

Архивы

  • get_next_posts_page_link()
  • get_pagenum_link()
  • get_posts_nav_link()
  • get_previous_posts_page_link()
  • get_the_archive_description()
  • get_the_archive_title()
  • get_the_posts_pagination()
  • get_year_link()
  • next_posts_link()
  • paginate_links()
  • posts_nav_link()
  • previous_posts_link()
  • the_archive_description()
  • the_archive_title()
  • the_posts_pagination()

Источник

Ссылки на предыдущие / следующие WordPress записи: функции next_post_link, previous_post_link и др.

Ссылки на предыдущий и следующий посты

В статье про оформление записей блога я рассмотрел примеры и коды для вывода некоторых дополнительных информационных элементов на страницах постов: связных заметок, названий тегов/категорий и т.п. Похожей фишкой также являются ссылки на предыдущие и следующие WordPress записи. Данные линки будут полезны при навигации посетителей сайта, а также являются еще одним способом перелинковки. Именно поэтому стараюсь добавлять их в каждый свой проект.

В реализации задачи нам помогут 4 функции, о которых расскажу ниже:

Поскольку речь идет о странице постов (Post), то в 99% случаев вам нужно будет редактировать файл шаблона single.php (либо тот, где в вашей теме задается формат вывода единичных статей). Функции используются в цикле Loop. Если же требуется убрать следующие / предыдущие записи в WordPress, то ищите соответствующий код в этом же файле шаблона и удаляйте (или закомментируйте) его.

Функция next_post_link

По умолчанию формируется линк на заметку, имеющую более новую дату создания сразу после текущей (т.к. все посты располагаются в хронологическом порядке). Вот как он выглядит в коде и на сайте:

Вывод следующей записи в WordPress

 next_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy ); ?>
  • format (строка) — определяет общий формат генерируемой ссылки, где с помощью переменной %link можете задавать какой-то текст до и после нее. По умолчанию это просто линк со стрелочкой: ‘%link »’
  • link (строка) — анкор ссылки на следующую запись в WordPress, параметр %title подставляет ее заголовок.
  • in_same_term (boolean) — определяет будут ли рассматриваться в работе только элементы из текущей категории. Допустимые значения true / false (1 / 0), по умолчанию второй вариант.
  • excluded_terms (строка или массив) — укажите ID категорий блога, заметки из которых будут исключены из выборки. Допускается либо массив array(2, 5, 4) либо написание в строку через запятую. Полезно при работе с GoGetLinks, когда нужно запретить показ рекламных постов в данном блоке.
  • taxonomy (строка) — содержит название таксономии, из которой берутся следующие записи, если переменная $in_same_term = true.

Судя из скриншота выше, понятно, что все эти параметры не являются обязательными. Вот пример использования функции на одном из моих сайтов:

 next_post_link('(следующая статья) %link →','%title', FALSE, 152) ?>

Здесь я задаю свой формат для отображения линка + исключаю из выборки все элементы, принадлежащие разделу >

Если вам нужно вывести в WordPress следующий пост из той же категории, то пригодится код ниже (при этом игнорируется раздел >

 next_post_link( '%link', 'Следующая заметка в разделе', TRUE, '33' ); ?>

Когда хотите работать только с текущей конкретной таксономией, указывайте ее название в параметрах (например, testimonial):

 next_post_link( '%link', 'Следующий >>', TRUE, ' ', 'testimonial' ); ?>

Функция previous_post_link

Принцип работы с предыдущими записями WordPress аналогичен приведенному выше описанию, как и синтаксис. Выглядит так:

Предыдущие записи WordPress

 previous_post_link( $format, $link, $in_same_term, $excluded_terms, $taxonomy ); ?>
  • format (строка) — задает формат создаваемой ссылки, за которую отвечает переменная %link (добавляйте текст/теги до и после нее). По умолчанию — ‘« %link’.
  • link (строка) — анкор линка, для вставки заголовка пишите %title.
  • in_same_term (boolean) — если значение true, то будут выводиться только объекты из того же раздела блога.
  • excluded_terms — убираем ненужные категории, указывайте ID через запятую (как строку) или массивом.
  • taxonomy (строка) — определяет таксономию выборки предыдущей записи в WordPress, если активен параметр $in_same_term.

В одном из блогов использую:

 previous_post_link('← %link', '%title', FALSE, 107) ?>

В коде все стандартно кроме исключения категории Ну, или вот еще пример:

 previous_post_link('%link', ', TRUE, '33'); ?>

Здесь делаем жирный шрифт + вместо заголовка элемента пишется определенная фраза (хотя лучше в перелинковке использовать тайтл). Выводятся объекты только текущей категории кроме той, у которой >

Функция the_post_navigation

Данное решение объединяет обе ссылки на предыдущие и следующие записи WordPress. Это сделано для удобства, заменяет вызов двух функций одной. Если вам нужно получить на выходе HTML код без отображения, применяйте get_the_post_navigation().

Синтаксис the_post_navigation максимально простой:

Где $args — набор разных не обязательных параметров:

  • $prev_text — анкор предыдущей ссылки (по умолчанию %title).
  • $next_text — аналогично текст линка но уже на следующий пост (изначально %title).
  • $in_same_term (true/false) — позволяет показывать статьи только из текущей таксономии.
  • $excluded_terms — исключаемые ID категорий через запятую.
  • $taxonomy — название таксономии для выборки, если in_same_term = true.
  • $screen_reader_text — заголовок всего блока (по умолчанию — Post navigation).

Таким образом, мы видим, что здесь имеются такие же переменные, как и в прошлых «единичных» функциях previous_post_link, next_post_link: анкоры, выборка по таксономиям и т.п. Использование решения просто сделает ваш код более компактным, да и нет смысла повторять одни и те же параметры два раза.

Рассмотрим самую простую ситуацию, когда нужно вывести навигацию по элементам из той же категории:

 the_post_navigation( array( 'prev_text' => 'следующий: %title', 'next_text' => 'предыдущий: %title', 'in_same_term' => true, 'taxonomy' => 'category', 'screen_reader_text' => 'Еще почитать', ) ); ?>

‘следующий: %title’, ‘next_text’ => ‘предыдущий: %title’, ‘in_same_term’ => true, ‘taxonomy’ => ‘category’, ‘screen_reader_text’ => ‘Еще почитать’, ) ); ?>

Если я правильно понимаю, то ее можно использовать не только для отображения в единичной записи, но и в архивных страницах категорий, заметках по месяцам, датам и т.п. То есть в single.php она будет отвечать за ссылки на предыдущие/следующие WordPress статьи, а в архивных — за навигацию по страницам.

 posts_nav_link( $sep, $prelabel, $nextlabel ); ?>
  • $sep — разделитель, отображаемый между ссылками (раньше был . сейчас —).
  • $prelabel — текст линка предыдущих элементов (по умолчанию: « Previous Page).
  • $nxtlabel — текст для следующей страницы/постов (Next Page »).

Вот интересный пример с картинками вместо текстовых линков:

 posts_nav_link( ' ', '  . get_bloginfo( 'stylesheet_directory' ) . '/images/prev-img.png" />', '  . get_bloginfo( 'stylesheet_directory' ) . '/images/next-img.png" />' ); ?>

Только не забудьте загрузить изображения prev-img.png и next-img.png в директорию images в вашем шаблоне. Думаю, аналогично добавляется и другой HTML код, если, допустим, нужно использовать какие-то DIV или class при выравнивании.

Итого. По навигации там еще есть несколько других разных функций, которые вы можете найти в кодексе. Надеюсь, с этими все более-менее понятно. Насчет posts_nav_link, если честно, не уверен, позволяет ли выводить предыдущие и следующие записи на единичной странице, т.к. не тестировал, хотя в описании это упоминается. Думаю, в таком случае более эффективно и желательно использовать the_post_navigation, что поновее и с куда бОльшим числом параметров.

Если есть какие-то вопросы по навигации между постами или дополнения, пишите ниже.

Понравился пост? Подпишись на обновления блога по RSS wordpress insideRSS, RSS wordpress insideEmail или twitter wordpress insidetwitter!

рейтинг

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

категорияКатегории: Возможности;
тегиТеги: wordpress кодекс, меню и навигация, новичкам, перелинковка блога, ссылки, функции wordpress.

Похожие статьи:

Источник

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