Omitir los primeros 3 posts en wp query
Aquí está la consulta que he utilizado.
<?php
// Obtener el número de página actual
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// Configurar la consulta de WordPress
$wp_query = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&paged=' . $paged); ?>
¿Hay alguna manera de omitir los primeros 3 posts solo en la primera página (?paged=1) y no en las otras páginas (?paged=2...)?
Para omitir publicaciones simplemente usa el parámetro offset en wp_query.
Para mostrar las últimas tres publicaciones:
<?php
$latestpost = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=3');
// Aquí añade el bucle para mostrar las publicaciones como
while($latestpost->have_posts()) : $latestpost->the_post();
the_title();
the_content();
endwhile; wp_reset_query();
// Después de eso omite tres publicaciones usando offset
$latestpost = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=' . $paged);
the_title();
the_content();
endwhile; wp_reset_query();
?>
Eso es todo
Bueno, acabo de seguir este método y le hice algunos cambios...
// en functions.php
$mega = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=3');
//configurar las publicaciones por página a 3 para que se muestren los ID de las primeras 3 publicaciones
$ids = array();
while ($mega->have_posts()) : $mega->the_post();
$ids[] = get_the_ID();
endwhile;
Después de eso, al bucle principal para omitir las primeras tres publicaciones del bucle, al que le hice algunos cambios.
$args= array(
'post_type' => 'post',
'posts_per_page' => 6,
'paged' => $paged,
'order'=> 'asc',
'orderby'=> 'meta_value',
'meta_key'=>'date',
'post__not_in' => $ids
);
$wp_query = new WP_Query($args);
Y funciona como yo quería..
Usando el parámetro offset: https://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
$wp_query = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=' . $paged); ?>
estropea la paginación... ?paged=2 muestra las mismas publicaciones
Megh Gandhi
@MeghGandhi ¿entiendes que el problema de paginación no tiene nada que ver con establecer el parámetro offset? Tu consulta ya tiene la paginación estropeada.
Robert hue
en realidad WordPress genera su propio offset lo que hace que funcione la paginación, y cuando establecemos los parámetros manualmente se rompe la paginación... http://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination
Megh Gandhi
Debería revisar nuevamente la paginación... a veces puede ser complicado implementarla correctamente. Por favor, prueba la consulta sin las propiedades posts_per_page y paged y comprueba si la paginación funciona correctamente según la configuración predeterminada de WordPress (Ajustes > Lectura).
deflime
http://www.smashingmagazine.com/2009/06/10-useful-wordpress-loop-hacks/#2-use-more-than-one-loop-on-a-page-without-printing-duplicate-posts bueno, usé este método y añadí el código a las funciones y ¡está funcionando, hurra!
Megh Gandhi
¿En lugar de usar el atributo offset has considerado crear una variable con un valor de 1 que se incremente en el bucle? Si el bucle es menor que 4 no hacer nada, de lo contrario:
<?php
$p=1;
while ( have_posts() ) : the_post();
if($p > 3) {
?>
// HACER ALGO
Esto no resuelve el problema directamente, pero podrías establecer una condición para que si es la primera página entonces omita los primeros 3 posts?