Как определить, что я нахожусь на первой странице пагинации?
Как определить, что я нахожусь на самой первой странице пагинации? Я использую WP_Pagenavi. Я хочу запустить функцию только на первой странице пагинации. Я проверил query_var 'paged', на этой странице он установлен на 0, а затем 2, 3 и так далее на последующих страницах (1 отсутствует!)... Кто-нибудь знает элегантное решение?
Спасибо.

если вам нужно узнать, находитесь ли вы на первой странице пагинации, используйте is_paged()
:
if ( !is_paged() ) {
// первая страница пагинации
}

Этот вариант сработал для меня. (Август 2017). Почему-то отмеченный как правильный ответ не работает..

@Gangesh всё работает отлично. Это простое условное выражение в WordPress, см.: https://developer.wordpress.org/reference/functions/is_paged/

Это верно, но вызов get_query_var( 'paged' )
дважды является избыточным. Второй параметр этой функции является необязательным и задаёт значение по умолчанию.
Таким образом, можно упростить до:
$paged = get_query_var( 'paged', 1 );

Я искал простой способ определить, нужно ли использовать функцию posts_nav_link()
, и все найденные мной решения в интернете были либо слишком сложными, либо ненадёжными. Например, многие предлагали использовать глобальную переменную $paged
, но я обнаружил, что эта переменная возвращает одно и то же значение для первой страницы, даже если первая страница является единственной!
Поэтому я углубился в файл wp-includes/link-template.php
и обнаружил, что функция posts_nav_link()
просто выводит возвращаемое значение другой функции:
/**
* Отображает навигационные ссылки для перехода между страницами записей.
*
* @since 0.71
*
* @param string $sep Необязательный. Разделитель для ссылок навигации.
* @param string $prelabel Необязательный. Текст для ссылки "Предыдущие страницы".
* @param string $nxtlabel Необязательный. Текст для ссылки "Следующие страницы".
*/
function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
$args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
echo get_posts_nav_link($args);
}
Используя эти знания, мы можем создать простой и эффективный способ определить, нужно ли добавлять ссылки для навигации между страницами:
$posts_nav = get_posts_nav_link();
if(empty($posts_nav)) {
// не используем posts_nav_link()
} else {
// используем posts_nav_link()
}
Оригинал статьи опубликован в моём блоге.
