get_adjacent_post()

Извлекает смежную запись
Функция WordPress
INT 2.5.0
WordPress Icon

Описание функции

Функция get_adjacent_post() используется для получения смежного поста (предыдущего или следующего) относительно текущего поста.

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

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

get_adjacent_post( bool $in_same_term = false, int[]|string $excluded_terms = '', bool $previous = true, string $taxonomy = 'category' ): WP_Post|null|string

Функция get_adjacent_post() принимает следующие параметры:

  • $in_same_term (bool, необязательный) — Определяет, должен ли смежный пост находиться в той же таксономии, что и текущий пост. По умолчанию: false.
  • $excluded_terms (int[]|string, необязательный) — Массив или список исключенных идентификаторов терминов. По умолчанию: ».
  • $previous (bool, необязательный) — Определяет, должен ли полученный пост быть предыдущим по отношению к текущему посту. По умолчанию: true.
  • $taxonomy (string, необязательный) — Таксономия, если $in_same_term установлен в true. По умолчанию: ‘category’.

Функция возвращает объект поста (WP_Post), если успешно найден смежный пост. Возвращает null, если глобальная переменная $post не установлена. Возвращает пустую строку, если соответствующий пост не найден.

<?php
// Получаем следующий пост в той же таксономии
$next_post = get_adjacent_post( true, '', false, 'category' );
// Проверяем, успешно ли получен следующий пост
if ( $next_post ) {
    // Выводим заголовок и ссылку на следующий пост
    echo '<h3>' . $next_post->post_title . '</h3>';
    echo '<a href="' . get_permalink( $next_post ) . '">Читать далее</a>';
} else {
    // Если следующий пост не найден, выводим сообщение
    echo 'Следующий пост не найден.';
}
?>

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

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

Получение предыдущего поста в той же категории


$previous_post = get_adjacent_post(true, '', true);
if ($previous_post) {
    // Выводим заголовок предыдущего поста
    echo $previous_post->post_title;
} else {
    // Если предыдущего поста нет, выводим сообщение
    echo 'Предыдущего поста нет';
}

В данном примере мы используем функцию get_adjacent_post() для получения предыдущего поста в той же категории. Первый параметр true указывает, что пост должен быть в той же таксономии, в данном случае — в той же категории. Второй параметр '' означает, что нет исключенных терминов. Третий параметр true указывает, что нужно получить предыдущий пост. Результатом выполнения функции будет объект WP_Post с информацией о предыдущем посте. Если предыдущего поста нет, функция вернет null.

Получение следующего поста в той же категории


$next_post = get_adjacent_post(true, '', false);
if ($next_post) {
    // Выводим заголовок следующего поста
    echo $next_post->post_title;
} else {
    // Если следующего поста нет, выводим сообщение
    echo 'Следующего поста нет';
}

В данном примере мы используем функцию get_adjacent_post() для получения следующего поста в той же категории. Первый параметр true указывает, что пост должен быть в той же таксономии, в данном случае — в той же категории. Второй параметр '' означает, что нет исключенных терминов. Третий параметр false указывает, что нужно получить следующий пост. Результатом выполнения функции будет объект WP_Post с информацией о следующем посте. Если следующего поста нет, функция вернет null.

Получение предыдущего поста в другой категории


$previous_post = get_adjacent_post(false, '', true);
if ($previous_post) {
    // Выводим заголовок предыдущего поста
    echo $previous_post->post_title;
} else {
    // Если предыдущего поста нет, выводим сообщение
    echo 'Предыдущего поста нет';
}

В данном примере мы используем функцию get_adjacent_post() для получения предыдущего поста в другой категории. Первый параметр false указывает, что пост не обязательно должен быть в той же таксономии. Второй параметр '' означает, что нет исключенных терминов. Третий параметр true указывает, что нужно получить предыдущий пост. Результатом выполнения функции будет объект WP_Post с информацией о предыдущем посте. Если предыдущего поста нет, функция вернет null.

Получение следующего поста в другой категории


$next_post = get_adjacent_post(false, '', false);
if ($next_post) {
    // Выводим заголовок следующего поста
    echo $next_post->post_title;
} else {
    // Если следующего поста нет, выводим сообщение
    echo 'Следующего поста нет';
}

В данном примере мы используем функцию get_adjacent_post() для получения следующего поста в другой категории. Первый параметр false указывает, что пост не обязательно должен быть в той же таксономии. Второй параметр '' означает, что нет исключенных терминов. Третий параметр false указывает, что нужно получить следующий пост. Результатом выполнения функции будет объект WP_Post с информацией о следующем посте. Если следующего поста нет, функция вернет null.

Вопросы и ответы

Как получить предыдущий пост?

Для получения предыдущего поста в WordPress можно использовать функцию get_adjacent_post(). Она принимает несколько параметров, но основной из них — это $previous, который по умолчанию равен true.

Если вы хотите получить предыдущий пост, то вам не нужно указывать этот параметр, так как значение по умолчанию уже подходит для этой задачи.

$previous_post = get_adjacent_post();
if ( $previous_post ) {
    echo 'Предыдущий пост: ' . $previous_post->post_title;
}

Как получить следующий пост?

Если вам нужно получить следующий пост, то вам нужно явно указать параметр $previous со значением false.

$next_post = get_adjacent_post( false );
if ( $next_post ) {
    echo 'Следующий пост: ' . $next_post->post_title;
}

Как получить пост в той же категории?

Чтобы получить пост в той же категории, вы можете использовать параметр $in_same_term, который по умолчанию равен false. В этом случае функция будет искать посты в той же категории, что и текущий.

$same_category_post = get_adjacent_post( true );
if ( $same_category_post ) {
    echo 'Пост в той же категории: ' . $same_category_post->post_title;
}

Как получить посты, исключая определенные категории?

Если вам нужно получить посты, исключая определенные категории, вы можете использовать параметр $excluded_terms. Он принимает массив или строку с ID исключаемых категорий.

$excluded_category_post = get_adjacent_post( false, '1,2,3' );
if ( $excluded_category_post ) {
    echo 'Пост, исключая категории 1, 2 и 3: ' . $excluded_category_post->post_title;
}

Как получить посты в определенной таксономии?

Для получения постов в определенной таксономии можно использовать функцию get_adjacent_post() с параметром $in_same_term установленным в значение true. По умолчанию, таксономия для поиска постов установлена в 'category'.


$in_same_term = true;
$taxonomy = 'my_custom_taxonomy';
$previous_post = get_adjacent_post($in_same_term, '', true, $taxonomy);
$next_post = get_adjacent_post($in_same_term, '', false, $taxonomy);

Как получить только определенные типы постов?

Для получения только определенных типов постов можно использовать функцию get_adjacent_post() с параметром $post_type установленным в нужное значение. По умолчанию, тип поста для поиска установлен в 'post'.


$post_type = 'my_custom_post_type';
$previous_post = get_adjacent_post(false, '', true, 'category', $post_type);
$next_post = get_adjacent_post(false, '', false, 'category', $post_type);

Как получить посты, исключая текущий пост?

Для получения постов, исключая текущий пост, можно использовать функцию get_adjacent_post() с параметром $excluded_terms установленным в ID текущего поста.


$current_post_id = get_the_ID();
$previous_post = get_adjacent_post(false, $current_post_id, true, 'category');
$next_post = get_adjacent_post(false, $current_post_id, false, 'category');

Как получить только определенные поля поста?

Для получения только определенных полей поста можно использовать функцию get_adjacent_post() с параметром $output установленным в нужное значение. По умолчанию, возвращается объект поста WP_Post.


$output = 'title';
$previous_post_title = get_adjacent_post(false, '', true, 'category', 'post', $output);
$next_post_title = get_adjacent_post(false, '', false, 'category', 'post', $output);

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

Связанные элементы

  • Функция get_previous_post(): Возвращает предыдущую запись.
  • Функция get_next_post(): Возвращает следующую запись.
  • Функция get_adjacent_post_rel_link(): Возвращает относительную ссылку на смежную запись.
  • Функция get_adjacent_post_link(): Возвращает HTML-ссылку на смежную запись.
Обсуждение