get_next_post()

Извлекает следующую запись, которая соседствует с текущей записью
Функция WordPress
INT 1.5.0
WordPress Icon

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

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

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

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

Функция принимает три необязательных параметра: $in_same_term, $excluded_terms и $taxonomy. По умолчанию, функция возвращает объект WP_Post, но может вернуть null если глобальная переменная $post не установлена, или пустую строку если соответствующий пост не найден.

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

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

<?php
$current_post = get_post(); // Получаем текущий пост
if ( $current_post ) {
  $next_post = get_next_post(); // Получаем следующий пост
  if ( $next_post ) {
    $next_post_title = $next_post->post_title;
    $next_post_permalink = get_permalink( $next_post );
    echo "Следующий пост: <a href='$next_post_permalink'>$next_post_title</a>";
  } else {
    echo "Следующего поста нет.";
  }
}
?>

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

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

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


$post = get_next_post();
if ( $post ) {
    setup_postdata( $post );
    // Вывод информации о посте
    the_title();
    the_content();
    // Сброс глобальной переменной $post
    wp_reset_postdata();
}

В данном примере используется функция get_next_post() без передачи параметров. Она возвращает следующий пост, который находится в той же категории, что и текущий пост. Если такой пост найден, то выполняется вывод его заголовка и содержимого с помощью функций the_title() и the_content(). После этого глобальная переменная $post сбрасывается с помощью функции wp_reset_postdata().

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


$post = get_next_post( true, '', 'custom_taxonomy' );
if ( $post ) {
    setup_postdata( $post );
    // Вывод информации о посте
    the_title();
    the_content();
    // Сброс глобальной переменной $post
    wp_reset_postdata();
}

В данном примере используется функция get_next_post() с параметром $in_same_term установленным в true. Это означает, что следующий пост будет выбран из таксономии, указанной в параметре $taxonomy. В данном случае, таксономия указана как custom_taxonomy. Если найден пост, удовлетворяющий условиям, то выполняется вывод его заголовка и содержимого, а затем глобальная переменная $post сбрасывается.

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


$post = get_next_post( false, '1,2,3' );
if ( $post ) {
    setup_postdata( $post );
    // Вывод информации о посте
    the_title();
    the_content();
    // Сброс глобальной переменной $post
    wp_reset_postdata();
}

В данном примере используется функция get_next_post() с параметром $excluded_terms, который указывает исключенные термины. В данном случае, исключены термины с ID 1, 2 и 3. Если найден пост, удовлетворяющий условиям, то выполняется вывод его заголовка и содержимого, а затем глобальная переменная $post сбрасывается.

Получение следующего поста без учета таксономии


$post = get_next_post( false, '', '' );
if ( $post ) {
    setup_postdata( $post );
    // Вывод информации о посте
    the_title();
    the_content();
    // Сброс глобальной переменной $post
    wp_reset_postdata();
}

В данном примере используется функция get_next_post() без передачи параметров $in_same_term и $taxonomy. Это означает, что следующий пост будет выбран без учета таксономии. Если найден пост, удовлетворяющий условиям, то выполняется вывод его заголовка и содержимого, а затем глобальная переменная $post сбрасывается.

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

Как получить следующий пост, смежный с текущим?

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

Первый параметр — $in_same_term, определяет, должен ли следующий пост находиться в той же таксономии, что и текущий пост. По умолчанию этот параметр равен false.

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

Третий параметр — $taxonomy, определяет таксономию, в которой должен находиться следующий пост, если параметр $in_same_term установлен в true. По умолчанию используется таксономия «category».

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

Если функция get_next_post() не находит следующего поста, она возвращает пустую строку. Это может произойти, например, если текущий пост является последним в списке постов.

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

Чтобы получить следующий пост в той же категории, необходимо установить параметр $in_same_term в true. По умолчанию используется таксономия «category», но вы можете указать свою таксономию, передав значение в параметр $taxonomy.

Пример кода:


$next_post = get_next_post(true);
if (!empty($next_post)) {
    echo 'Следующий пост: ' . $next_post->post_title;
} else {
    echo 'Нет следующего поста.';
}

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

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

Для этого можно использовать параметр $excluded_terms, который позволяет указать массив или список идентификаторов исключаемых терминов. Например:


$excluded_terms = array(1, 2, 3);
$next_post = get_next_post(false, $excluded_terms);

В данном примере мы исключаем термины с идентификаторами 1, 2 и 3 из поиска следующего поста.

Как изменить таксономию, используемую для поиска следующего поста?

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

Для этого можно использовать параметр $taxonomy, который позволяет указать нужную таксономию. Например:


$taxonomy = 'custom_taxonomy';
$next_post = get_next_post(false, '', $taxonomy);

В данном примере мы ищем следующий пост в пользовательской таксономии «custom_taxonomy».

Как получить следующий пост, если глобальная переменная $post не установлена?

Если глобальная переменная $post не установлена, функция get_next_post() вернет значение null. Чтобы получить следующий пост в таком случае, можно явно указать идентификатор текущего поста.

Например:


$current_post_id = 123;
$next_post = get_next_post(false, '', 'category', $current_post_id);

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

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

Если нет соответствующего поста, функция get_next_post() вернет пустую строку.

Например:


$next_post = get_next_post(false);
if (empty($next_post)) {
    echo 'Нет следующего поста.';
}

В данном примере мы проверяем, есть ли следующий пост. Если нет, выводим сообщение «Нет следующего поста».

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

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

  • Функция get_previous_post(): Retrieves the previous post that is adjacent to the current post.
  • Функция get_adjacent_post(): Retrieves the adjacent post based on the current post’s date.
  • Класс WP_Query: Retrieves posts based on query parameters.
  • Класс WP_Post: Represents a post object with properties and methods for accessing post data.
Обсуждение