Je cherche un moyen d'équilibrer le contenu sur la page d'accueil de mon blog:
le blog a quelques types d'articles comme Poscasts, Videos et Blog et j'aimerais avoir, disons, 10 articles sur la page d'accueil, mais j'aimerais en faire 5 le dernier blog.
Faire 3 cases 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 sur PHP pur, mais j'aimerais avoir une idée de la procédure à suivre en utilisant l'API wordpress, toute aide ou référence sera la bienvenue!
Si vous recherchez 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, mettez <?php customBlogFeed(); ?>
où vous voulez que ceci apparaisse.
Si vous voulez vraiment avoir envie de jouer, vous pouvez vous connecter à post_limits Filter et limiter le nombre de publications par type de publication. J'espère que cela vous aide dans votre quête.
PS - Regardez dans WP_Query , cela vous aidera vraiment.
Après quelques recherches, vous voudrez peut-être examiner post_clauses pour obtenir ces caractérisations SQL effectuées avec WP3.1 + Syntaxe
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é