web-dev-qa-db-fra.com

Nouveau modèle de blog pour afficher une seule catégorie

Je comprends que je peux copier le modèle de blog par défaut de mon thème et modifier le code pour qu’il n’affiche que les messages d’une catégorie dans le style du thème. J'ai essayé de bricoler avec, mais aucun résultat pour le moment. C'est le code dans le thème:

$posts = new WP_Query( array('post_type'=>'post', 'paged'=>$paged) );
            if( $posts->have_posts() ):
                echo '<div class="list-posts">';
                while( $posts->have_posts() ) : $posts->the_post();
                    get_template_part( 'content', get_post_format() ); 
                endwhile;
                echo '</div>';

                wp_reset_postdata();
            else:
                echo '<div class="alert alert-error">'.esc_html__('Sorry. There are no posts to display', 'gon').'</div>';
            endif;

J'ai essayé de changer les valeurs sur while( $posts->have_posts() ) : $posts->the_post(); mais sans succès.

Comment puis-je faire ce travail?

2
Maud Kon

Si votre thème crée une nouvelle requête pour la boucle de la page principale, il agit très mal. Pour obtenir une archive de catégories, tout ce dont vous avez besoin est un modèle nommé selon l'un de ces modèles , selon vos besoins:

  1. category-{slug}.php - Si le slug de la catégorie est news, WordPress recherchera category-news.php.
  2. category-{id}.php - Si l’ID de la catégorie est 6, WordPress recherchera category-6.php.
  3. category.php

Avec une boucle qui ressemble à ceci:

if( have_posts() ) {
  echo '<div class="list-posts">';
  while( have_posts() ) {
    $posts->the_post();
    get_template_part( 'content', get_post_format() ); 
  }
  echo '</div>';
  wp_reset_postdata();
} else {
  echo '<div class="alert alert-error">'.esc_html__('Sorry. There are no posts to display', 'gon').'</div>';
}

De plus, bien entendu, quel que soit le code dont votre thème a besoin. Je ne peux pas vraiment deviner à quoi ce code ressemble.

1
s_ha_dum