Сышышь ты, выходи сюда,
поговорим !

Главная Новости

Get_adjacent_post_link() — Получает ссылку (HTML тег A) на смежные записи (следующая/предыдущая). Можно указать ограничения по рубрикам или элементам таксономий. Функция WordPress.

Опубликовано: 01.09.2018

Получает ссылку (HTML тег A) на смежные записи (следующая/предыдущая). Можно указать ограничения по рубрикам или элементам таксономий.

Используется на страницах типа is_single() .

Хуки из функции:
Возвращает

Строку: HTML код ссылки:

<a rel="nofollow" href="/post_name">Заголовок поста</a>

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

get_adjacent_post_link( $format, $link, $in_same_term, $excluded_terms, $previous, $taxonomy ); $format(строка) (обязательный) Формат ссылки. %link будет заменено на HTML код ссылки <a>. Например, '%link →' выведет <a ...> →. $link(строка) (обязательный) Анкор ссылки. '%title' будет заменено на заголовок записи. $in_same_term(логический) true - будет искать смежные записи в том же элементе таксономии (рубрике) что и текущая статья, откуда вызывается функция. false - будет искать ссылки из всех элементов таксономии.

По умолчанию: false $excluded_terms(массив/строка) ID элементов таксономии, статьи в которых не нужно учитывать. Указывается в массиве или в строке через запятую, например: '1,5,15' или array(1,5,15).

По умолчанию: '' $previous(логический/строка) Какую записи искать: следующую за текущей статьей (false) или до текущей статьи (true).

По умолчанию: true $taxonomy(строка) Название таксономии с которой работать, если есть параметр $in_same_term.

По умолчанию: 'category'

Примеры

#1 Демонстрация

Ниже варианты вызова функции и то что в результате выводится:

# ссылка на предыдущую запись echo get_adjacent_post_link( '← %link', '%title' ); # выведет: ← <a href="http://test.ru/markup" rel="prev">Маркировка</a> # ссылка на следующую запись echo get_adjacent_post_link( '%link →', '%title', 0, '', false ); # выведет: <a href="http://wptest.ru/some" rel="next">Что-то</a> → # ссылка на предыдущую запись из текущей рубрики echo get_adjacent_post_link( '%link', '← %title', 1 ); # выведет: <a href="http://test.ru/markup" rel="prev">← Маркировка</a> # ссылка на следующую запись из текущей рубрики echo get_adjacent_post_link( '%link', '%title →', 1, '', false ); # выведет: <a href="http://wptest.ru/some" rel="next">Что-то →</a> # ссылка на предыдущую запись из текущего элемента таксономии (my_tax), для произвольных таксономий echo get_adjacent_post_link( '%link', '%title →', 1, '', 1, 'my_tax' ); # ссылка на следующую запись из текущего элемента таксономии (my_tax) echo get_adjacent_post_link( '%link', '%title →', 1, '', 0, 'my_tax' ); # ссылка на предыдущую запись не учитывая записи из рубрик 5 и 10 echo get_adjacent_post_link( '%link', '%title →', 0, '5,10' );

#2 Функция кольцевой перелинковки

Функция из комментариев от Campusboy , которая может пригодится.

Особенность функции в том что, если след. или пред. записи нет, то будет выведена ссылка на первую или последнюю запись соответственно.

/** * Выводит ссылку (HTML тег A) на смежные записи (следующая/предыдущая). * * При отсутствии смежной записи выводит запись с противоположного конца рубрики. Работает в пределах той рубрики, где находится сама запись. * * @param string $course принимает значение next/prev. */ function da_the_adjacent_post_link( $course = '' ){ global $post; $course = ( $course == 'prev' ) ? true : false; $order = ( $course ) ? 'DESC' : 'ASC'; $class = ( $course ) ? 'prev' : 'next'; $link = get_adjacent_post_link( '%link', '%title', true, '', $course ); if ( ! $link ){ $term = get_the_terms( $post->ID, 'category' ); $term = $term[0]; $article = get_posts([ 'numberposts' => 1, 'exclude' => $post->ID, 'category' => $term->term_id, 'order' => $order ]); if ( empty($article) ) return false; else $article = $article[0]; $link = sprintf( '<a href="%s" rel="%s">%s</a>', get_the_permalink($article->ID), $class, $article->post_title ); } echo $link; }

Код get adjacent post link : wp-includes/link-template.php VER 4.9.6

<?php function get_adjacent_post_link( $format, $link, $in_same_term = false, $excluded_terms = '', $previous = true, $taxonomy = 'category' ) { if ( $previous && is_attachment() ) $post = get_post( get_post()->post_parent ); else $post = get_adjacent_post( $in_same_term, $excluded_terms, $previous, $taxonomy ); if ( ! $post ) { $output = ''; } else { $title = $post->post_title; if ( empty( $post->post_title ) ) $title = $previous ? __( 'Previous Post' ) : __( 'Next Post' ); /** This filter is documented in wp-includes/post-template.php */ $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'; /** * Filters the adjacent post link. * * The dynamic portion of the hook name, `$adjacent`, refers to the type * of adjacency, 'next' or 'previous'. * * @since 2.6.0 * @since 4.2.0 Added the `$adjacent` parameter. * * @param string $output The adjacent post link. * @param string $format Link anchor format. * @param string $link Link permalink format. * @param WP_Post $post The adjacent post. * @param string $adjacent Whether the post is previous or next. */ return apply_filters( "{$adjacent}_post_link", $output, $format, $link, $post, $adjacent ); }

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

Из метки: adjacent link (связанные ссылки)

Еще из раздела: Навигация

rss