WordPressでオリジナル表示に変更する方法、カスタムページの名前のルール

WordPressサイトのカスタマイズ WordPress

WordPressでサイトを表示する場合はテーマにはいっているテンプレートが表示されます。表示されるページの箇所によってファイル名がきまっています。次のphpファイル名があれば表示が優先されます。

オリジナルコードが記載されたページは、子テーマの中の直下に、該当ファイル名で保存します。

オリジナルの表示ページ作成、PHPファイル名を確認する

ホームページ表示

サイトフロントページ、または固定ページの上にあるブログ投稿インデックスページの表示に使用されるテンプレートファイル。注意: サイトフロントページ上にある場合、フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。

  1. home.php
  2. index.php

フロントページ表示

サイトフロントページの表示に使用されるテンプレートファイル。フロントページはブログ投稿インデックス、または固定ページを表示します。フロントページテンプレートは、ブログ投稿インデックス (ホーム) テンプレートに優先します。

  1. front-page.php – 管理 > 設定 > 表示設定 セクションで「フロントページの表示」が「最新の投稿」または「固定ページ」どちらになっている場合でも使われる。
  2. 固定ページ表示ルール – 管理 > 設定 > 表示設定 セクションの「フロントページの表示」で、「フロントページ」が設定されている場合
  3. ホームページ表示ルール – 管理 > 設定 > 表示設定 セクションの「フロントページの表示」で、「投稿ページ」が設定されている場合

個別投稿表示

個別投稿ページの表示に使用されるテンプレートファイル。

  1. single-{post_type}.php – 投稿タイプが product ならば WordPress は single-product.php を探す。
  2. single.php
  3. singular.php
  4. index.php

固定ページ表示

固定ページ (page 投稿タイプ) の表示に使用されるテンプレートファイル。

  1. カスタムテンプレートファイル – ページ作成画面の「テンプレート」ドロップダウンメニューで選択したテンプレート名。get_page_templates()参照。
  2. page-{slug}.php – 固定ページのスラッグが recent-news ならば WordPress は page-recent-news.php を探す。
  3. page-{id}.php – 固定ページIDが 6 ならば WordPress は page-6.php を探す。
  4. page.php
  5. singular.php
  6. index.php

参照: 固定ページ

カテゴリー表示

カテゴリーアーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. category-{slug}.php – カテゴリーのスラッグが news ならば WordPress は category-news.php を探す。
  2. category-{id}.php – カテゴリー ID が 6 ならば WordPress は category-6.php を探す。
  3. category.php
  4. archive.php
  5. index.php

参照: カテゴリーテンプレート

タグ表示

タグアーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. tag-{slug}.php – タグのスラッグが sometag ならば WordPress は tag-sometag.php を探す。
  2. tag-{id}.php – タグ ID が 6 ならば WordPress は tag-6.php を探す。
  3. tag.php
  4. archive.php
  5. index.php

参照: タグテンプレート/en

カスタム分類表示

カスタム分類アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. taxonomy-{taxonomy}-{term}.php – 分類名が sometax、項目が someterm ならば WordPress は taxonomy-sometax-someterm.php を探す。投稿フォーマットの場合、分類名は ‘post_format’、項目は ‘post_format-{format}’、つまり taxonomy-post_format-post-format-link.php 。
  2. taxonomy-{taxonomy}.php – 分類名が sometax ならば WordPress は taxonomy-sometax.php を探す。
  3. taxonomy.php
  4. archive.php
  5. index.php

参照: カスタム分類

カスタム投稿タイプ表示

カスタム投稿タイプ アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. archive-{post_type}.php – 投稿タイプ が product ならば WordPress は archive-product.php を探す。
  2. archive.php
  3. index.php

(カスタム投稿タイプの個別ページを表示する場合は個別投稿表示を参照)

参照: カスタム投稿タイプ

作成者表示

作成者別アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. author-{nicename}.php – 作成者の nicename がramiならば WordPress は author-rami.php を探す。
  2. author-{id}.php – 作成者の作成者ID が 6 ならば WordPress は author-6.php を探す。
  3. author.php
  4. archive.php
  5. index.php

参照: 作成者テンプレート/en

日付別表示

日付別アーカイブインデックスページの表示に使用されるテンプレートファイル。

  1. date.php
  2. archive.php
  3. index.php

検索結果表示

検索結果インデックスページの表示に使用されるテンプレートファイル。

  1. search.php
  2. index.php

参照: 検索テンプレート

404 (Not Found) 表示

サーバーエラー 404 ページの表示に使用されるテンプレートファイル。

  1. 404.php
  2. index.php

参照: 404 テンプレート

添付ファイル表示

個別添付ファイルページ (attachment 投稿タイプ) の表示に使用されるテンプレートファイル。

  1. {MIME_type}.php – 任意の MIME タイプ (image.php, video.php, application.php)。text/plainならば、以下の順番:
    1. text.php
    2. plain.php
    3. textplain.php
  2. attachment.php
  3. single-attachment.php
  4. single.php
  5. index.php

Embeds

embed テンプレートファイルは embed 機能で埋め込まれる投稿のレンダリングに使用されます。Version 4.5 から WordPress は次の順序を使用します。

  1. embed-{post-type}-{post_format}.php – まず WordPress は特定の投稿に関するテンプレートを探します。例えば 投稿タイプが「product」で、「音声(audio)」フォーマットを持つ場合 WordPress は「embed-product-audio.php」を探します。
  2. embed-{post-type}.php – 投稿タイプが「car」であれば WordPress は「embed-car.php」を探します。
  3. embed.php – そして WordPress は「embed.php」に落ちます。
  4. どのテンプレートファイルも見つからなければ最後に WordPress は wp-includes/theme-compat/embed.php を使用します。

階層のフィルター

WordPress テンプレートシステムでは階層にフィルターを適用できます。get_query_template() /en 関数内にあるフィルターはファイル名 “{$type}_template” です。このとき $type は階層内の拡張子 .php なしのファイル名。

すべてのリスト:

  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • tag_template
  • taxonomy_template
  • date_template
  • home_template
  • frontpage_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template, plain_template, text_plain_template (すべての MIME タイプ)
  • attachment_template
  • comments_popup

例として、デフォルトの作成者別階層を以下に挙げます。

  • author-{nicename}.php
  • author-{id}.php
  • author.php

ここで author.php の前に author-{role}.php を追加する場合、’author_template’ フックを使用して実際の階層を操作できます。/author/username に要求があり、username が編集者権限グループに所属するなら author-editor.php が現在のテーマディレクトリ内で探され、存在すれば表示に使用されます。

function author_role_template( $templates='' )
{
	$author = get_queried_object();
	$role=$author->roles[0];
	
	if(!is_array($templates) && !empty($templates)) {
		$templates=locate_template(array("author-$role.php",$templates),false);
	} 
	elseif(empty($templates)) {
		$templates=locate_template("author-$role.php",false);
	}
	else {
		$new_template=locate_template(array("author-$role.php"));
		if(!empty($new_template)) array_unshift($templates,$new_template);
	}
	
	return $templates;
}
add_filter( 'author_template', 'author_role_template' );
タイトルとURLをコピーしました