Wordpressでカスタムテンプレートを使用している時に条件分岐する方法
- 投稿日:2021/10/09 |最終更新:2021/10/11
- Wordpress
- カスタムページテンプレート
Wordpressではカスタムページテンプレートを作成し、記事編集画面でテンプレートを選択することでフロントへの出力方法を変更できます。
カスタムテンプレートを使用している時、ヘッダーやフッター・function.phpなどのカスタムテンプレート以外の部分で「このテンプレートを使用していた時はこれをする」などの条件分岐をしたい場合があるかと思います。
そういった時に利用できる関数をいくつか紹介します。
is_page_template()で指定したテンプレートファイルが利用されているか確認する
is_page_template()
関数では、特定のテンプレートファイルが利用されているか確認することができます。
引数に指定したページテンプレートが利用されていれば True、そうでなければ false を返します。
ループ内では使用できません。
ループ内で使用したい場合はwp_reset_query()
を行う必要があります。
is_page_template()の記述例
if ( is_page_template( 'my_page_template.php' ) ) { // 'my_page_template.php' が使われている場合 } elseif ( is_page_template( 'page-template/my_page_template.php' ) ) { // 'page-template/my_page_template.php' が使われている場合 } else { // 'my_page_template.php' が使われていない場合 }
※引数に指定するテンプレートファイルは、テーマフォルダからのパスを記載します。
get_page_template_slug()関数でページテンプレートのスラッグを取得する
get_page_template_slug()
関数を利用すると、ページテンプレートを使用している場合に使用しているページテンプレートのスラッグを取得できます。
引数で指定した記事にスラッグが取得できればスラッグ、そうでなければfalseを返します。
ループ内でも使用できます。
get_page_template_slug()の記述例
// ページテンプレートが使用されているか確認. if ( get_page_template_slug( $post_id ) && get_page_template_slug( $post_id ) == 'my_page_template' ){ // 'my_page_template'というページテンプレートが使用されている場合. } elseif ( get_page_template_slug( $post_id ) ){ // ページテンプレートが使用されている場合. } else { // ページテンプレートが使用されていない場合. }
※引数に指定するテンプレートファイルは、テーマフォルダからのパスを記載します。
参考URL
Wordpress「関数リファレンス/is page template」
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_page_template