¿Cómo obtener un número variable de publicaciones por tipo de publicación en el bucle principal?

8

Estoy buscando una forma de equilibrar el contenido en la página de inicio de mi blog:

el blog tiene algunos tipos de publicaciones como Poscasts, Videos y Blog y me gustaría tener, digamos, 10 publicaciones en la página de inicio, pero me gustaría hacer que 5 de ellas sean siempre el último Blog.

Hacer 3 cuadros separados no resuelve mi problema porque las publicaciones se mezclan y no siempre habrá tantas publicaciones de los otros tipos.

Podría pensar en la solución para él en PHP puro, pero me gustaría tener una idea de cómo hacerlo usando la API de WordPress, cualquier ayuda, ¡cualquier referencia será bienvenida!

Jonathan dos Santos
fuente
Sí, está lejos de ser efectivo o "la forma correcta" de hacerlo, pero de todos modos +1. Aprecia el esfuerzo que has realizado para mostrar lo que quieres lograr. :)
kaiser
1
Te sugiero que uses la forma estándar de hacer las cosas: bucles secundarios; solo emite get_postsconsultas de 3 tipos; Estos vendrán con el beneficio adicional de almacenamiento en caché (cualquier backend disponible) y seguridad entre otros. codex.wordpress.org/The_Loop#Multiple_Loops que estoy seguro de que has visto.
soulseekah
+ 1 por tu esfuerzo!
Rutwick Gangurde

Respuestas:

1

Si todavía está buscando una alternativa que pueda ser más rápida, esto puede ayudarlo a:

<?php
function customBlogFeed() {

// The Query 
$the_query = new WP_Query( array ( 'post_type' => array( 'post', 'page', 'movie', 'book'), 'posts_per_page' => '6' ) );
//Your post_type array is a list of random post_types. You can add whatever you'd like to match your system.

// The Loop 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>


  <?php the_title(); ?>
      <?php the_content(); ?>

<?php endwhile;

// Reset Post Data
wp_reset_postdata();
}
?>

Luego, para obtener su salida, colóquela <?php customBlogFeed(); ?>donde desee que esto salga .

Si realmente quieres ponerte elegante, puedes conectarte al filtro post_limits y limitar la cantidad de publicaciones que se muestran por tipo de publicación. Espero que esto te ayude en tu búsqueda.

PD: busca en WP_Query , realmente te ayudará.

Después de un poco de investigación, es posible que desee examinar post_clauses para realizar esas caracterizaciones SQL con WP3.1 + Syntax

David
fuente
1

Entonces, después de unos meses. Encontré la respuesta a tu pregunta exacta:

add_action('pre_get_posts', 'custom_main_query', 1);
function custom_main_query( $query ) {
  if ( $query->is_main_query() && is_home() ) { 
  //be super careful with this and to be safe, keep the is_home() 
  //bit there, I've had some funny results without it.

    $query->query_vars['posts_per_page'] = 3; //displays 3 posts ;)
    $query->query_vars['post_type'] = array('post'); //and if you wanted multiple cpts <3

    return $query;

    }
}

Salud

David
fuente