Necesito tener una cantidad diferente de publicaciones por página en la primera página que en las otras páginas.
Por ejemplo, esto es lo que necesito.
- Total de mensajes: 6
- Primera página: mostrando 3 publicaciones
- Página siguiente: muestra 2 publicaciones por página
Aquí está mi código:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$fp_limit = 3; // first page limit
$limit = 2; // following page limit
$offset = 0; // default offset
if( $paged == 1 ) {
$limit = $fp_limit;
} else {
$offset = $fp_limit + ( ($paged - 2) * $limit );
}
$args = array(
'post_type' => 'my_post_type',
'post_status' => 'publish',
'offset' => $offset,
'posts_per_page' => $limit,
'caller_ get_ posts' => -1, // remove sticky post
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'my_taxo',
'field' => 'slug',
'terms' => array('slug1', 'slug2', 'slug3')
)
)
);
$my_query = null;
$my_query = new WP_Query($args);
// basic loop
if( $my_query->have_posts() ) :
while ($my_query->have_posts()) : $my_query->the_post();
...
endwhile; endif; // archive loop
if (function_exists('wp_pagenavi')){ wp_pagenavi( array( 'query' => $my_query ) ); }
wp_reset_query();
En la primera página del archivo, este código supone:
Bueno, 6 publicaciones en total y 3 publicaciones por página. Necesito 2 páginas de archivo y la paginación que les presento es:
[1] [2]
Sin embargo, en cualquier otra página del archivo, el código supone:
Bueno, 6 publicaciones en total y 2 publicaciones por página. Necesito 3 páginas de archivo y la paginación que les presento es:
[1] [2] [3]
Necesito un poco de ayuda para arreglar esto.
custom-post-types
loop
pagination
norixxx
fuente
fuente
'caller_ get_ posts'
contiene espacios y no es válido. En segundo lugar, está en desuso. Usar en suignore_sticky_posts
lugar.Respuestas:
EDITAR - RESPUESTA REVISADA
He estado trabajando en otra solución que en realidad es mejor la respuesta original. Esto no implica ninguna consulta personalizada y creo que, a todos los efectos, mi respuesta original puede descartarse pero conservarse con fines informativos
Todavía creo que estás en la página de inicio y también trataré esto como tal. Esta es mi nueva solución.
PASO 1
Elimine la consulta personalizada de la página de inicio y reemplácela con el bucle predeterminado
PASO 2
Use
pre_get_posts
para modificar la consulta principal para agregar su taxonomía personalizada a la consulta principal para mostrar en la página de inicio.PASO 3
Ahora, obtenga la
posts_per_page
opción establecida desde el back-end (que supongo que es 2) y también configure laoffset
que vamos a usar. Eso será1
porque necesitarás 3 publicaciones en la página uno y 2 en el restoETAPA 4
En la página uno, deberá agregar el
offset
paraposts_per_page
agregar hasta 3 para obtener sus tres publicaciones en la página uno.PASO 5
Debe aplicar su
offset
a todas las páginas posteriores, de lo contrario obtendrá una repetición de la última publicación de la página en la página siguientePASO 6
Por último, debe restar su desplazamiento de lo
found_posts
contrario, su paginación en la última página será incorrecta y le dará un404
error ya que faltará la última publicación debido al recuento incorrecto de publicacionesNOTA: Este código rompió la paginación en la página de búsqueda. Esto ya está arreglado, vea el código actualizado
TODOS JUNTOS
Así es como se verá su consulta completa que debería ir a functions.php
fuente
Sé que esto es de hace 1000 años, pero otra solución para cualquiera que esté buscando esta solución mientras usa una consulta personalizada, aquí es cómo hacerlo. En este ejemplo, la primera página necesitaba 10 publicaciones y cada página posterior necesita 9.
y luego en la matriz use esto:
Ahora estás listo para irte.
fuente