Como determinar se estou na primeira página da paginação?

22

Como determino se estou na primeira página da paginação? Estou usando o WP_Pagenavi. Eu quero executar uma função somente na primeira página da paginação. Eu verifiquei o query_var 'paginado', ele está definido como 0 nesta página e depois 2, 3 e assim por diante nas páginas posteriores (falta 1!) ... Alguém conhece uma solução limpa?

Obrigado.

Rutwick Gangurde
fonte

Respostas:

24
// get current page we are on. If not set we can assume we are on page 1.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// are we on page one?
if(1 == $paged) {
    //true
}
Brady
fonte
4
Isso está correto, mas chamar get_query_var( 'paged' )duas vezes é redundante. O segundo parâmetro opcional dessa função é o valor padrão. Então, você poderia simplificá-lo para: $paged = get_query_var( 'paged', 1 );
Linnea Huxford
Ago 2017: Este não está funcionando para mim, está produzindo 1 em cada página. No entanto, a resposta de Michael funcionou perfeitamente.
21717 Surjith SM
32

se você quiser apenas saber que está na primeira página de uma página paginada, tente is_paged():

if ( !is_paged() ) {
  // first page of pagination
}
Michael
fonte
Este funcionou para mim. (Ago 2017). De alguma forma, a resposta marcada como correta não está funcionando ..
Surjith SM 17/08
Excelente, limpo e simples.
Trace DeCoy 28/02
4

Eu estava procurando uma maneira simples de determinar se deveria ou não usar a posts_nav_link()função e todas as soluções que encontrei on-line eram muito complexas ou não confiáveis. Por exemplo, muitas pessoas sugeriram o uso da $pagedvariável global, mas descobri que essa variável retornava o mesmo valor para a primeira página, mesmo quando a primeira página era a única página!

Então, procurei no wp-includes/link-template.phparquivo e descobri que a posts_nav_link()função simplesmente gera o valor de retorno de outra função:

/**
 * Display post pages link navigation for previous and next pages.
 *
 * @since 0.71
 *
 * @param string $sep Optional. Separator for posts navigation links.
 * @param string $prelabel Optional. Label for previous pages.
 * @param string $nxtlabel Optional Label for next pages.
 */
function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
    $args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
    echo get_posts_nav_link($args);
}

Usando esse conhecimento, podemos criar uma maneira simples e eficaz de determinar se precisamos adicionar links para navegar entre as páginas:

$posts_nav = get_posts_nav_link();
if(empty($posts_nav)) {
    // do not use posts_nav_link()
} else {
    // use posts_nav_link()
}

Originalmente publicado no meu blog aqui .

iglvzx
fonte