Comment obtenir un nombre variable de publications par type de publication sur la boucle principale?

8

Je cherche un moyen d'équilibrer le contenu sur la page d'accueil de mon blog:

le blog a quelques types de messages comme Poscasts, Vidéos et Blog et j'aimerais avoir disons 10 messages sur la page d'accueil, mais j'aimerais en faire 5 toujours le dernier blog.

Faire 3 boîtes séparées ne résout pas mon problème car les messages sont mélangés et il n'y aura pas toujours autant de messages des autres types.

Je pourrais penser à la solution pour cela sur PHP pur, mais j'aimerais avoir une idée sur la façon de le faire en utilisant l'API wordpress, toute aide, référence sera la bienvenue!

Jonathan dos Santos
la source
Oui, c'est loin d'être efficace ou "la bonne façon" de le faire, mais de toute façon +1. Appréciez l'effort que vous avez déployé pour montrer ce que vous voulez réaliser. :)
kaiser
1
Je vous suggère d'utiliser la façon standard de faire les choses - les boucles secondaires; get_postsémettez simplement des requêtes de type 3 ; ceux-ci viendront avec l'avantage supplémentaire de la mise en cache (quel que soit le backend disponible) et de la sécurité, entre autres. codex.wordpress.org/The_Loop#Multiple_Loops que je suis sûr que vous avez vu.
soulseekah
+ 1 pour votre effort!
Rutwick Gangurde

Réponses:

1

Si vous cherchez toujours une alternative plus rapide, cela peut vous aider:

<?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();
}
?>

Ensuite, pour obtenir sa sortie, placez-la à l' <?php customBlogFeed(); ?>endroit où vous souhaitez que cela sorte.

Si vous voulez vraiment devenir fantaisiste, vous pouvez vous connecter au filtre post_limits et limiter le nombre de publications par type de publication. J'espère que cela vous aidera dans votre quête.

PS - Regardez dans WP_Query , cela vous aidera vraiment.

Après quelques recherches, vous voudrez peut-être examiner les post_clauses pour obtenir ces caractérisations SQL avec WP3.1 + Syntax

David
la source
1

Donc, après quelques mois. J'ai trouvé la réponse à votre question exacte:

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;

    }
}

À votre santé

David
la source