ワードプレスでのアーカイブ記事一覧表示が上手くいかず悩んでいます。
<?php if ( is_archive() ) : the_title( '<h2 class="entry-title">', '</h2>' ); else : the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); endif; ?> <p><?php the_time( get_option( 'date_format' ) ); ?></p> <?php the_content( sprintf( __( 'Continue reading %s', 'twentyfifteen' ), the_title( '<span class="screen-reader-text">', '</span>', false ) ) ); ?>
上記のコードで、カテゴリ別、月別のアーカイブ記事一覧を表示しようとしています。
ただ、これだと最新の1記事のみしか表示されないため、該当する記事が全て表示されるようにループ処理を以下の用に加えました。
<?php if ( have_posts() ) : /** ループ開始 */ while ( have_posts() ) : the_post(); ?> <?php if ( is_archive() ) : the_title( '<h2 class="entry-title">', '</h2>' ); else : the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); endif; ?> <p class="Text_date"><?php the_time( get_option( 'date_format' ) ); ?></p> <div id="Infomation"> <?php /* translators: %s: Name of current post */ the_content( sprintf( __( 'Continue reading %s', 'twentyfifteen' ), the_title( '<span class="screen-reader-text">', '</span>', false ) ) ); ?> <?php endwhile; else : ?> <h3>Not Found</h3> <p>Sorry, but you are looking for something that isn't here.</p> <?php endif; /* ループ終了 */ ?>
そうしたところ、クリックしたカテゴリや月に「該当する数」の記事が表示されるようになりましたが、「常に最新の記事から順に表示される」ようになってしまいました。
(イメージ)
――――――――――――――――――――――――――――――――――――――――
「カテゴリ」
・仕事(3) ←例えばここをクリックすると
・学習(6)
・休暇(4)
・その他(2)
「月別」
・2017年6月(2)
・2017年7月(5)
・2017年8月(6)
・2017年9月(2)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
「仕事カテゴリの3記事」ではなく、「最新の3記事」が表示されてしまう。
++++++++++++++++++++++++++++++++++++++
「記事タイトル記事タイトル」(2017年9月14日)カテゴリ:その他
記事の内容記事の内容
++++++++++++++++++++++++++++++++++++++
「記事タイトル記事タイトル」(2017年9月6日)カテゴリ:学習
記事の内容記事の内容
++++++++++++++++++++++++++++++++++++++
「記事タイトル記事タイトル」(2017年8月30日)カテゴリ:休暇
記事の内容記事の内容
++++++++++++++++++++++++++++++++++++++
※「学習カテゴリ」をクリックした場合は、「最新の6記事」が表示される。
※「2017年7月」をクリックした場合は、「最新の5記事」が表示される。
――――――――――――――――――――――――――――――――――――――――
クリックしたカテゴリや月に該当する記事すべてを正しく表示させるにはどのようなコードに修正すればよいでしょうか?
初歩的な質問で大変恐縮ですが、ご指導いただけますと幸いです。
【追記】
※今回は「自作テーマ」を作成しています。
カテゴリや月別ページへのリンク一覧は以下のように記述しています。
※不十分な知識やスキルを向上させるためにあえて自作でチャレンジさせていただいていますので、「できないなら元からあるテーマを使え」といったご指摘はしないでいただけると幸いです・・・。
<section id="Nwes"> <div id="News_topBox"> </div> <div id="News_mainBox"> <div id="SideBox"> <div id="Category"> <h4>カテゴリ</h4> <ul> <?php $args = array( 'show_option_all' => '', 'orderby' => 'name', 'order' => 'ASC', 'style' => 'none', 'show_count' => 1, 'hide_empty' => 0, 'use_desc_for_title' => 1, 'child_of' => 0, 'feed' => '', 'feed_type' => '', 'feed_image' => '', 'exclude' => '', 'exclude_tree' => '', 'include' => '', 'hierarchical' => 1, 'title_li' => __( 'Categories' ), 'show_option_none' => __( '' ), 'number' => null, 'echo' => 1, 'depth' => 0, 'current_category' => 0, 'pad_counts' => 0, 'taxonomy' => 'category', 'walker' => null ); wp_list_categories( $args ); ?> </ul> </div> <div id="NewArrials"> <h4>新着情報</h4> <ul> <?php $args = array( 'posts_per_page' => 4 // 表示件数の指定 ); $posts = get_posts( $args ); foreach ( $posts as $post ): // ループの開始 setup_postdata( $post ); // 記事データの取得 ?> <li><a href="<?php the_permalink(); ?>"><p><?php the_title(); ?></p></a></li> <?php endforeach; // ループの終了 wp_reset_postdata(); // 直前のクエリを復元する ?> </ul> </div> <div id="past"> <h4>過去の記事</h4> <ul> <?php wp_get_archives('type=monthly&show_post_count=1'); ?> </ul> </div> </div>
回答1件
あなたの回答
tips
プレビュー