気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. WordPressのPHP
  2. 1 view

single.phpで記事本文のthe_contentが実行されていない理由

WordPressテーマで個別記事のテンプレートはsingle.phpです。ところが、個別記事のレイアウトをカスタマイズしようと思ってsingle.phpを開いても、記事本文を表示するthe_content関数が実行されていない場合があります。

その場合、個別記事のタイトルや本文などのレイアウトがcontent.phpなどに切り離されていることが考えられます。

たとえば、Twenty Fifteenのsingle.phpには次のように記述されています。

get_template_part( 'content', get_post_format() );

これにより、投稿フォーマットごとに違うレイアウト(content-投稿フォーマット.php)を適用できるようになります。デフォルトの標準フォーマットの場合はcontent.phpが使われます。

実際にcontent.phpを開いてみると、記事のタイトルを表示するthe_title関数や本文を表示するthe_content関数が実行されているのを確認できます。

つまり、個別記事のタイトルや本文をsingle.phpに書かず、content.phpに切り離しておいてget_template_partで読み込むという仕組みです。

ただし、content.phpは個別記事のsingle.phpだけで使われるとは限らず、アーカイブテンプレートのarchive.phpなどからも呼び出されている場合があります。

その場合、content.phpには単純に個別記事のレイアウトが書かれているのではなく、「もしも個別記事ならA、アーカイブではB」のようにページごとに別々のレイアウトが定義されています。

典型的な例として、記事タイトルに付けるタグは個別記事ではh1、アーカイブではh2のように別々のタグになるのが定番なので、次のような分岐がよく見られます。

if ( is_single() ) :
    the_title( '<h1 class="entry-title">', '</h1>' );
else :
    the_title( sprintf( '<h2 class="entry-title">…略…);
endif;
is_singleは個別記事かどうか判別する関数です。

このように記事タイトルや本文のレイアウトをcontent.phpに切り離して使った方が何かと効率的にテンプレートを管理できるので、個別記事テンプレートのsingle.phpにはタイトルのthe_titleや本文のthe_contentが書かれていないことがあります。

WordPressのPHPの最近記事

  1. WordPressダッシュボードのメニューを非表示にするremove_menu_page関…

  2. WordPressで中身が空のindex.phpは消しても大丈夫?

  3. WordPressのPHPでショートコードを呼び出す方法

  4. is_categoryとin_categoryの違い

  5. wp_get_attachment_image_src関数の使用例

関連記事

PAGE TOP