¿Cómo determinar si estoy en la primera página de paginación?


22

¿Cómo determino si estoy en la primera página de paginación? Estoy usando WP_Pagenavi. Quiero ejecutar una función solo en la primera página de la paginación. Verifiqué el query_var 'paginado', está establecido en 0 en esta página, y luego 2, 3 y así sucesivamente en las páginas posteriores (¡falta 1!) ... ¿Alguien sabe una solución limpia?

Gracias.

Respuestas:


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
}

44
Esto es correcto, pero llamar get_query_var( 'paged' )dos veces es redundante. El segundo parámetro opcional de esa función es el valor predeterminado. Entonces, podría simplificarlo a: $paged = get_query_var( 'paged', 1 );
Linnea Huxford

Agosto de 2017: este no funciona para mí, está generando 1 en cada página. Sin embargo, la respuesta de Michael funcionó a la perfección.
Surjith SM

32

si solo quieres saber que estás en la primera página de una página paginada, prueba is_paged():

if ( !is_paged() ) {
  // first page of pagination
}

Este me funcionó. (Agosto de 2017). De alguna manera, la respuesta marcada como correcta no funciona ..
Surjith SM

Excelente, limpio y sencillo.
Trace DeCoy

4

Estaba buscando una manera simple de determinar si usar o no la posts_nav_link()función y todas las soluciones que encontré en línea eran demasiado complejas o poco confiables. Por ejemplo, muchas personas sugirieron usar la $pagedvariable global, pero descubrí que esta variable devolvió el mismo valor para la primera página, ¡incluso cuando la primera página era la única página!

Entonces, busqué en el wp-includes/link-template.phparchivo y descubrí que la posts_nav_link()función simplemente genera el valor de retorno de otra función:

/**
 * 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);
}

Con este conocimiento, podemos crear una forma simple y efectiva de determinar si necesitamos o no agregar enlaces para navegar entre las páginas:

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

Publicado originalmente en mi blog aquí .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.