web-dev-qa-db-fra.com

Afficher uniquement les publications d'une catégorie sur la page d'archive personnalisée de type publication

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&amp;showposts='.get_option('posts_per_page')); ?>
1
Acidon

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' );
1
Milo

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;
0
tfrommen