WordPress 条件分岐:テンプレートのカスタマイズ
投稿日:2019年5月10日/更新日:2019年5月16日WordPressではPHPの if文を使用して条件分岐が可能です。
記載箇所は「外観」→「テーマの編集」にある各種テンプレートとなります。
但し記載箇所や動作はテンプレートによって多少異なりますので実際の動作をご確認ください。
例えばトップページではサイドバーAを使用、投稿ページではサイドバーBを使用、カテゴリーページではサイドバーCを使用、それ以外ではサイドバーDを使用 のように表示を変えることが可能です。
条件分岐の基本
条件Aの時のみ<?php if ( 条件A ): ?> 条件Aの処理内容 <?php endif; ?>
条件Aの場合
条件Bの場合
条件A・B以外
<?php if ( 条件A ): ?> 条件Aの処理内容 <?php elseif ( 条件B ): ?> 条件Bの処理内容 <?php else: ?> 条件A・B以外の処理内容 <?php endif; ?>
トップページ
トップページに表示<?php if ( is_home() ): ?> トップページに表示 <?php endif; ?>
トップページを固定ページにしている場合
<?php if ( is_front_page() ): ?> フロントページに表示 <?php endif; ?>
投稿ページ
投稿ページに表示※固定ページは含まれない。
<?php if ( is_single() ): ?> 投稿ページに表示 <?php endif; ?>
投稿ページ ID 55 に表示
※投稿ページのIDの確認は管理画面「投稿」→「投稿一覧」から記事タイトルをクリックしてURLのpost=○○の数字箇所を確認
※IDの代わりに投稿名でも可能
<?php if ( is_single( '55' ) ): ?> 投稿ページ ID 55 に表示 <?php endif; ?>
投稿ページ ID 55 と ID 100 に表示
<?php if ( is_single( array( '55', '100' ) ) ): ?> 投稿ページ ID 55 と ID 100 に表示 <?php endif; ?>
トップページに表示
投稿ページに表示
トップページ・投稿ページ以外に表示
<?php if ( is_home() ): ?> トップページに表示 <?php elseif ( is_single() ): ?> 投稿ページに表示 <?php else: ?> トップページ・投稿ページ以外に表示 <?php endif; ?>
トップページに表示
カテゴリーWordPressに属した投稿ページとそのカテゴリーページに表示
カテゴリーcssに属した投稿ページとそのカテゴリーページに表示
上記以外に表示
※カテゴリーは管理画面「投稿」→「カテゴリー」の「スラッグ」を確認
<?php if ( is_home() ): ?> トップページに表示 <?php elseif ( in_category('wordpress') ): ?> カテゴリーWordPressに属した投稿ページとそのカテゴリーページに表示 <?php elseif ( in_category('css') ): ?> カテゴリーcssに属した投稿ページとそのカテゴリーページに表示 <?php else: ?> 上記以外に表示 <?php endif; ?>※ in_category を使用( is_category とは動作が異なります。)
※ in_categoryはパラメータ必須
※ single.php,sidebar.phpなど記載するテンプレートにより表示が異なります。
カテゴリーページ
カテゴリーページページに表示<?php if ( is_category() ): ?> カテゴリーページに表示 <?php endif; ?>
wordpressカテゴリーページに表示
※カテゴリーは管理画面「投稿」→「カテゴリー」の「スラッグ」を確認
※スラッグの代わりにカテゴリーIDでも可能
<?php if ( is_category('wordpress') ): ?> wordpressカテゴリーページに表示 <?php endif; ?>
トップページに表示
wordpressカテゴリーページに表示
cssカテゴリーページに表示
上記以外の表示
<?php if ( is_home() ): ?> トップページに表示 <?php elseif ( is_category('wordpress') ): ?> wordpressカテゴリーページに表示 <?php elseif ( is_category('css') ): ?> cssカテゴリーページに表示 <?php else: ?> 上記以外に表示 <?php endif; ?>
トップページに表示
wordpressとwebカテゴリーページに表示
cssカテゴリーページに表示
上記以外の表示
<?php if ( is_home() ): ?> トップページに表示 <?php elseif ( is_category( array( 'wordpress', 'web' ) ) ): ?> wordpressとwebカテゴリーページに表示 <?php elseif ( is_category('css') ): ?> cssカテゴリーページに表示 <?php else: ?> 上記以外に表示 <?php endif; ?>
固定ページ
固定ページに表示<?php if ( is_page() ): ?> 固定ページに表示 <?php endif; ?>
固定ページ ID 100 に表示
※固定ページのIDの確認は管理画面「固定ページ」を開いて一覧からタイトルをクリックしてURLのpost=○○の数字箇所を確認
※ ID の代わりに投稿名でも可能
<?php if ( is_page( '100' ) ): ?> 固定ページ ID 100 に表示 <?php endif; ?>
トップページに表示
固定ページ ID 100 と 150 に表示
固定ページ ID 200 に表示
上記以外に表示
<?php if ( is_home() ): ?> トップページに表示 <?php elseif ( is_page( array( '100', '150' ) ) ): ?> 固定ページ ID 100 と 150 に表示 <?php elseif ( is_page( '200' ) ): ?> 固定ページ ID 200 に表示 <?php else: ?> 上記以外に表示 <?php endif; ?>
複数条件がある場合は組み合わせて使用します。
論理演算子
論理演算子を使用する事によりAとBのどちらの条件も満たされた時に処理を行うなど複数の条件を指定したり、Aでないときのみに処理を行う事ができます。
「and」 または 「&&」条件Aと条件Bの両方がTRUEの場合にTRUEとなります。
<?php if ( 条件A and 条件B ): ?> // 実行内容 <?php endif; ?>
<?php if ( 条件A && 条件B ): ?> // 実行内容 <?php endif; ?>
例えば否定を使用してトップページではない場合、なおかつ投稿ページではない場合に実行する事ができます。
「or」 または 「||」条件Aと条件BのどちらかがTRUEの場合にTRUEとなります。
<?php if ( 条件A or 条件B ): ?> // 実行内容 <?php endif; ?>
<?php if ( 条件A || 条件B ): ?> // 実行内容 <?php endif; ?>
例としてトップページの場合、もしくは投稿ページの場合に実行するようにと使用できます。
「!」条件がTRUEでない場合TRUEとなります。
<?php if ( !条件A ): ?> // 実行内容 <?php endif; ?>
この場合、条件Aが否定された場合に実行されます。使用例としてはトップページではない場合に実行など特定の条件に当てはまらない場合に使用します。
条件分岐タグの種類
メインページ
is_home()
フロントページ
is_front_page()
投稿ページ
is_single()
カテゴリーページ
is_category()
固定ページ
is_page()
タグページ
is_tag()
日付別ページ
is_date()
アーカイブページ
is_archive()
検索結果ページ
is_search()
作成者ページ
is_author()
404 Not Found ページ
is_404()
条件分岐 応用編
<?php if ( is_home() ): ?> トップページに表示 <?php elseif ( is_single() ): ?> 投稿ページに表示 <?php elseif ( is_category() ): ?> カテゴリーページに表示 <?php elseif ( is_page() ): ?> 固定ページに表示 <?php elseif ( is_tag() ): ?> タグページに表示 <?php elseif ( is_date() ): ?> 日付別ページに表示 <?php elseif ( is_archive() ): ?> アーカイブページに表示 <?php elseif ( is_search() ): ?> 検索結果ページ <?php elseif ( is_author() ): ?> 作成者ページに表示 <?php elseif ( is_404() ): ?> 404 Not Found ページに表示 <?php else: ?> 上記以外に表示 <?php endif; ?>
実際にはここまで振り分けすることはないと思いますが、どのテンプレートが表示されているか確認する時は便利です。条件分岐を使用することによりカスタマイズの幅も広がりますのでご活用ください。
またさらに詳しい内容は以下のページにてご確認ください。
条件分岐タグ – WordPress Codex 日本語版
Leave a Reply