WP 投稿用・固定ページ用に別テンプレートを作成

投稿ページに別のテンプレートを作成する方法

ファイル名は任意でOK。 テンプレート冒頭に下記を明記。Template Post Type: post,newsで指定します。カスタム投稿ページに利用する場合はスラッグ名(例:news)を指定すると投稿ページで選択できるようになります。

<?php
/*
Template Name: 投稿用テンプレート全幅
Template Post Type: post,news
*/
?>

投稿ページのテンプレートを変更する方法【WordPress】 | Webお役立ちネタ帳

固定ページ用の別テンプレートを作成する方法

  • ファイル冒頭にTemplate Name:xxxを記述してテンプレートファイルだと認識させる。(ページ作成画面からテンプレート選択)
  • スラッグを利用してpage-{スラッグ名}.phpでファイル作成する。(ページ作成画面ではデフォルトテンプレートのまま)

固定ページのテンプレート階層

  1. カスタムテンプレート:ファイル冒頭にTemplate Name:xxxを記述
  2. page-{slug}.php:固定ページのスラッグがaboutならpage-about.php
  3. page-{id}.php:固定ページのidが6ならpage-6.php
  4. page.php
  5. 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を複製して作成する。