質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

225閲覧

Wordpress【アーカイブ記事一覧表示】ループ処理が思うようにいきません。

Ashi

総合スコア139

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/10/04 02:43

編集2017/10/04 03:53

ワードプレスでのアーカイブ記事一覧表示が上手くいかず悩んでいます。

<?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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/10/04 03:19

使用されているテーマは自作テーマでしょうか?それとも公開されているテーマでしょうか?後者の場合は入手先をリンクつきで質問文に追記してください。
Ashi

2017/10/04 03:53

自作テーマを使っています。質問に追記させていただきました。改めてご確認いただけますでしょうか?
guest

回答1

0

ベストアンサー

件数がそれぞれ違うので、query_posts で件数を変更していたりしませんか?もしその場合は pre_get_posts で書き直すことをお勧めします。

【pre_get_postsでメインクエリを制御する | Tips Note by TAM】
https://www.tam-tam.co.jp/tipsnote/cms/post9420.html

【【wordpress】pre_get_postsを使ってみませんか? - Qiita】
https://qiita.com/ruka/items/e14280d34eddf49efad1

【[Wordpress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ | EMiAC-Works】
https://emiac-works.com/coding/pre-get-posts-code-snipet/

投稿2017/10/04 03:01

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ashi

2017/10/04 03:18

確認しましたがquery_postsは使用していません。
kei344

2017/10/04 03:19

ではどのように件数の出しわけをしていますか?単に記事数が少ないだけですか?
Ashi

2017/10/04 03:54

リンク一覧のコードを追記させていただきました。
kei344

2017/10/04 06:32

> ではどのように件数の出しわけをしていますか?単に記事数が少ないだけですか? これへの返答が追記部分に含まれていません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問