Omitir los primeros 3 posts en wp query

18 sept 2015, 17:55:01
Vistas: 28.1K
Votos: 5

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...)?

0
Todas las respuestas a la pregunta 4
1

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

18 sept 2015 18:33:27
Comentarios

pero eso desordena la paginación, es decir, la paginación no funciona... de todas formas gracias por responder

Megh Gandhi Megh Gandhi
18 sept 2015 19:48:47
0

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, 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..

18 sept 2015 22:46:38
5

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); ?>
18 sept 2015 17:59:17
Comentarios

estropea la paginación... ?paged=2 muestra las mismas publicaciones

Megh Gandhi Megh Gandhi
18 sept 2015 18:12:27

@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 Robert hue
18 sept 2015 20:45:54

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 Megh Gandhi
18 sept 2015 21:01:43

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 deflime
18 sept 2015 21:23:34

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 Megh Gandhi
18 sept 2015 22:35:58
0

¿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?

28 oct 2016 19:58:02