投稿ページに別のテンプレートを作成する方法
ファイル名は任意でOK。 テンプレート冒頭に下記を明記。Template Post Type: post,newsで指定します。カスタム投稿ページに利用する場合はスラッグ名(例:news)を指定すると投稿ページで選択できるようになります。
<?php /* Template Name: 投稿用テンプレート全幅 Template Post Type: post,news */ ?>
投稿ページのテンプレートを変更する方法【WordPress】 | Webお役立ちネタ帳
固定ページ用の別テンプレートを作成する方法
- ファイル冒頭にTemplate Name:xxxを記述してテンプレートファイルだと認識させる。(ページ作成画面からテンプレート選択)
- スラッグを利用してpage-{スラッグ名}.phpでファイル作成する。(ページ作成画面ではデフォルトテンプレートのまま)
固定ページのテンプレート階層
- カスタムテンプレート:ファイル冒頭にTemplate Name:xxxを記述
- page-{slug}.php:固定ページのスラッグがaboutならpage-about.php
- page-{id}.php:固定ページのidが6ならpage-6.php
- page.php
- index.php
ファイル冒頭にTemplate Name:xxxを記述してテンプレートファイルだと認識させる方法(ページ作成画面からテンプレート選択)
1.テンプレートファイル作成(ファイル名は自由だが、template-xxx.phpなどわかりやすくする)
2.page.phpと同じようにタグを置き換える
固定ページのテンプレートなので、page.phpを複製したほうがいいかもしれません。
3.テンプレートファイルとして認識させる記述をする
<?php /** * Template Name: 住所付きテンプレート * Description: サイドバーに住所も表示されるテンプレート */ ?>
管理画面から確認するとテンプレートが選べるようになっています。
4.フィルターを共通化
page.phpを複製して、フィルターが重複などしていたら、functions.phpに下記のように記述して、page.phpとtemplate-xxx.phpから該当箇所を削除します。
例:page.phpとtemplate-xxx.phpに自動整形機能を停止するフィルターが書かれていた場合
if(is_page('contact')){ remove_filter('the_content', 'wpautop'); }
finctions.php
/** * 特定のページでは自動整形機能を停止する */ add_action( 'wp', 'my_wpautop' ); function my_wpautop() { if ( is_page('contact') ) { remove_filter('the_content', 'wpautop'); } }
スラッグを利用してpage-{スラッグ名}.phpでファイル作成する。(ページ作成画面ではデフォルトテンプレートのまま)
page.phpを複製して作成する。