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

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

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

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

Q&A

解決済

2回答

590閲覧

wordpressのsingle.phpでも記事が全件表示されてしまう

masao1991

総合スコア15

WordPress

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

0グッド

0クリップ

投稿2018/08/16 11:23

編集2018/08/16 11:26

前提・実現したいこと

index.phpで表示された記事のリンクを踏んで、single.phpへ飛んで記事の詳細画面へと推移したいのですが、single.phpでも全件表示されてしまいます。

single.phpのループ文は正しく記述されています。
index.phpの記述に誤りがあると、うまく表示されなかったりしますか?
また、どういった点をチェックすればよろしいでしょうか。

発生している問題・エラーメッセージ

該当のソースコード

補足情報(FW/ツールのバージョンなど)

リンクを踏んで飛んだ先のページURLはタイトルのURLになっており、 single.phpの変更もちゃんと反映されているので、
single.phpには飛べています。
しかし、記事部分に関して、タイトルに対応した表示ではなく、一覧が表示されてしまいます。

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

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

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

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

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

guest

回答2

0

自己解決

原因が判明いたしました。
header.php内に同じループ文をいれていたため、それをはずしたところ、正常に個別に記事が表示されたことを確認しました。

これは、ヘッダーに横スクロールで最新記事を流すようにレイアウトを組んでいたので、
そこのループ文が干渉して、コンテンツ部分の記事も記事一覧として表示されてしまっていたみたいです。

投稿2018/08/17 04:15

masao1991

総合スコア15

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

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

0

自分だったら確認するというポイントを書いてみます。

一覧を出す関数として

get_posts
WP_Query
query_posts(お勧めしない)

という関数があります。
これら関数に値を渡し(引数を設定している)
ループを回している部分で一覧の出力をしているケースが多いとおもいます。

the_title()だったらタイトル。
the_excerpt()で抜粋。

みたいなパターンで出力していることが多いので
上記関数名で検索します。

前述のクエリを設定する関数を削除し
以下のようなループをsingle.phpに記述すると
投稿内容が表示されると思います。

single.php

1<?php if(have_posts()): while(have_posts()): the_post(); ?> 2<div> 3 <h2> 4 <?php the_title(); ?> 5 </h2> 6 <p class="postdate"><?php echo get_the_date('Y年m月d日'); ?></p> 7 <?php the_content();//ここで本文を出力 ?> 8</div> 9<?php endwhile; endif; ?>

index.phpはsingle.phpなどテンプレートファイルがない場合
汎用的に読み込まれたりしますが、single.phpがあれば
テンプレートファイルとして読み込まれるはずです。

https://wpdocs.osdn.jp/wiki/images/wp-template-hierarchy.jpg

single-{post_type}.phpというのがあるとそちらが優先されるようですね。
とはいえ複数のテンプレートが自動で併用されることはないと思います。
(テンプレート内で明示的に呼び出しているパターンはphpファイルを組み合わせることもあります。
header.phpやfooter.phpなどもそうですね)

投稿2018/08/16 12:18

ruuusaamarki

総合スコア468

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

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

masao1991

2018/08/17 00:56

早速ありがとうございます。内容よませていただきました。 試しに、single.phpにruuusaamarkiさんが記述してくださったループ文に置き換えて更新してみましたが、 依然、single.phpで全ての一覧結果がでてしまう状態でした。 get_postsでの取得等もこれから調査してみようかと思います。 どこか別で設定が必要だったりするのでしょうか。function.phpでなにか記述が必要(逆も然り)だったり...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問