web-dev-qa-db-ja.com

1つのカテゴリのみを表示するための新しいブログテンプレート

テーマのデフォルトのブログテンプレートをコピーして、テーマのスタイルの1つのカテゴリからの投稿のみを表示するようにコードを変更できることを理解しています。私はそれをいじってみたが、まだ結果が得られなかった。これがテーマのコードです。

$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;

while( $posts->have_posts() ) : $posts->the_post();の値を変更しようとしましたが成功しませんでした。

どうすればこれを機能させることができますか?

2
Maud Kon

あなたのテーマがメインページループのための新しいクエリを作成しているなら、それは非常に悪いことをしています。カテゴリアーカイブを取得するために必要なのは、必要に応じて、 という名前のテンプレート に従うテンプレートだけです。

  1. category-{slug}.php - カテゴリのスラッグがnewsの場合、WordPressはcategory-news.phpを探します。
  2. category-{id}.php - カテゴリのIDが6の場合、WordPressはcategory-6.phpを探します。
  3. category.php

このようなループがあります。

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>';
}

もちろん、あなたのテーマがそれを取り巻くために必要とするどんなコードでも。私はそのコードがどのように見えるのか本当に推測できません。

1
s_ha_dum