J'ai un type de message personnalisé, appelé Exercices. J'ai aussi beaucoup de catégories dans ce type de message personnalisé. J'utilise la boucle personnalisée archive-exercices.php pour afficher ma page d'exercices principale.
Question: Comment modifier mon archive-exercices.php afin qu’il n’affiche que les messages d’une catégorie spécifique?
J'ai réussi à obtenir un effet similaire sur ma page d'accueil avec des messages réguliers:
<?php query_posts('cat=93&showposts='.get_option('posts_per_page')); ?>
Utilisez l'action pre_get_posts
pour modifier une requête principale avant son envoi à la base de données, ce qui inclut également le cas de votre page d'accueil. L'appel de query_posts
dans le modèle exécute une nouvelle requête et écrase l'original. C'est un gaspillage de ressources et peut produire des résultats imprévisibles, en particulier avec la pagination.
function wpa_pre_get_posts( $query ){
if( is_post_type_archive( 'exercises' ) && $query->is_main_query() ){
$query->set( 'cat', 42 );
}
}
add_action( 'pre_get_posts','wpa_pre_get_posts' );
Configurez simplement une nouvelle requête limitée à votre type d'article personnalisé et à votre catégorie/catégories désirées ...
$args = array(
'post_type' => 'exercises',
'cat' => 93,
// some other parameters
);
$exercises = new WP_Query($args);
while ($exercises->have_posts()) : $exercises->the_post()
// your posts stuff
endwhile;