¿Limitar la consulta a 1, independientemente de la publicación fija?

4

Como parte de la plantilla de mi página de inicio, utilizando las consultas estándar_posts, obtengo 1 publicación (diseñada con un contenido diferente), luego un anuncio y luego el resto de las publicaciones. Esto funciona bien, excepto cuando alguien establece una publicación como adhesiva, cuando el bucle con posts_per_page establecido en 1, saca 2.

¿Cómo puedo hacer que su bucle muestre solo 1 publicación, ya sea la última, o la parte superior, pero no ambas (lo que entiendo es el comportamiento esperado)? Actualmente tengo:

    <?php 
$posts_per_page = get_option('posts_per_page');
$num_featured_posts = 1;

query_posts(array('posts_per_page' => $num_featured_posts)); ?>

  <?php if ( have_posts() ) : ?>

    <?php while ( have_posts() ) : the_post(); ?>

      <?php get_template_part( 'content', 'super' ); ?>

    <?php endwhile; ?>

  <?php elseif ( current_user_can( 'edit_posts' ) ) : ?>

    <?php get_template_part( 'no-results', 'index' ); ?>

  <?php endif; ?>

Gracias,

ACTUALIZACIÓN: Después de llamar explícitamente solo 1 publicación, independientemente de los estados fijos, y excluirla del bucle principal de publicaciones, ahora mi bucle principal duplica una publicación en las páginas siguientes (la última se convierte en la primera en la página 2). La compensación me está causando dolores de cabeza y generalmente rompe la paginación fácilmente. ¿Hay alguna otra forma de corregir / agregar a esto?

  wp_reset_query();
  $args = array(
    'post__not_in' => array($first_sticky_post),
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),        
  );
  //query_posts( $args );
  $main_loop = new WP_Query( $args );

... para restablecer donde debe comenzar el bucle en las páginas > 1?

Puede verlo en acción aquí: n2.project14.co.uk

Gracias,

    
pregunta Luc Pestille 07.10.2012 - 17:41

1 respuesta

3

$GLOBALS['wp_query']->found_posts te dará el número de publicaciones.

$GLOBALS['wp_query']->posts es una matriz con todas las publicaciones encontradas.

Entonces, en lugar de while ( have_posts() ) : the_post(); use:

setup_postdata( $GLOBALS['wp_query']->posts[0] );
get_template_part( 'content', 'super' );

De esta manera, no corres por todas las publicaciones, solo usas una.

Y lea ¿Cuándo debería usar WP_Query vs query_posts () vs get_posts ()?

    
respondido por el fuxia 07.10.2012 - 17:55

Lea otras preguntas en las etiquetas