fbpixel

Sticky posts al principio del blog en 2 categorías

En un blog tengo 2 categorías de posts.

Quiero mostrar agrupadas primero las de una categoría y luego las de otra.

Y dentro de cada grupo, quiero mostrar primero los posts que estén marcados como “Marcar esta entrada como fija”.

Quedaria algo así:

27%20PM

Hola @mparraud, no es una solución muy elegante, ya que repite bastante código, pero funciona. El ejemplo se aplica a una sola categoría. Igual se puede replicar en la segunda.

Voy a usar la clase WP_Query.

Primero hago un query de los posts correspondientes a la categoría (en este caso publicaciones-y-conferencias).

Luego, si hay más espacio fuera de esa búsqueda corro una query buscando los posts que no están marcados como sticky. Es importante siempre luego de terminar el loop de la query llamar al método wp_reset_query();

<div class="row">
<?php 
  $sticky_query_args = [
    'category_name'     => 'publicaciones-y-conferencias',
    'post__in'          => get_option( 'sticky_posts' ),
    'posts_per_page'    => 8
  ];
  
  $sticky_count = 0;
  $sticky_query = new WP_Query($sticky_query_args);
  
  if( $sticky_query->have_posts() ):
    while( $sticky_query->have_posts() ): $sticky_query->the_post();
?>
      <div class="col-md-3">
        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
      </div>
<?php 
      $sticky_count++;
    endwhile;
  endif; wp_reset_query();

  if( $sticky_count < 8 ):
    $non_sticky_query_args = [
      'category_name'     => 'publicaciones-y-conferencias',
      'post__not_in'      => get_option( 'sticky_posts' ),
      'posts_per_page'    => (8 - $sticky_count)
    ];

    $non_sticky_query = new WP_Query($non_sticky_query_args);
    
    if( $non_sticky_query->have_posts() ):
      while( $non_sticky_query->have_posts() ): $non_sticky_query->the_post();
?>
        <div class="col-md-3">
          <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        </div>
<?php 
      endwhile;
    endif; wp_reset_query();

  endif;
?>
</div>

Gracias por la respuesta!! No la vi antes porque desde el sábado, y aún hoy, estoy sin luz.

Lo pruebo y te cuento