TIPSWEB制作の備忘録

ホーム > WEB制作の備忘録 > よく使うWordPressの条件分岐

よく使うWordPressの条件分岐

公開:2025.10.12 更新:2025.11.16

WordPressの条件分岐

自分がよく使うWordPressの条件分岐用コードをまとめた記事です。
条件分岐は、特定の条件(ページスラッグやidなど)で表示する内容を変更するときに使います。
たとえば、「header.php」などの複数のページで使用しているテンプレート内で、

  • 「ページA」が表示されている場合は「ページB」へのリンクを表示する
  • 「ページB」が表示されている場合は「ページC」へのリンクを表示する

…のような使い方をしています。
基本的な書き方は、次の通りです。

PHP
<?php if (ここに条件を指定します)://条件分岐を始めます?>
<?php elseif (ここに条件を指定します)://違う条件の場合?>
<?php else://どの条件でもない場合?>
<?php endif;//条件分岐を終了します?>

//もしくは

<?php if (ここに条件を指定します){//条件分岐を始めます?>
<?php } elseif (ここに条件を指定します){//違う条件の場合?>
<?php } else {//どの条件でもない場合?>
<?php }//条件分岐を終了します ?>

//★複数の条件を指定する場合「||」で区切ります
<?php if (条件1 || 条件2):?>
<?php endif;?>
//条件1か条件2のどちらかに当てはまる場合に表示します

//★複数の条件を指定する場合「&&」で区切ります
<?php if (条件1 && 条件2):?>
<?php endif;?>
//条件1と条件2の両方に当てはまる場合に表示します

//★指定した条件を除外する場合は「!」をつけます
<?php if (!ここに条件を指定します):?>
<?php endif;?>
//指定した条件に当てはまらない場合に表示します

if~からendifがセットになっています。
条件が正しく設定されていないときや、開始タグもしくは終了タグが抜けているとエラーになりますので注意しましょう。

トップページ用条件分岐

PHP
<?php if (is_home() || is_front_page()):?>
<?php endif;?>

トップページでの表示/非表示を切り替える条件分岐です。
この条件にあてはまるテンプレートは「front-page.php」や「home.php」です。
ですが、両方ない場合は「index.php」になります。
また、WordPressの表示設定で「ホームページの表示」を固定ページにして、「front-page.php」がない場合は固定ページ用テンプレートが使用されます。

固定ページ用条件分岐

PHP
<?php if (is_page()):?>
<?php endif;?>

//★固定ページをスラッグで指定する場合
<?php if (is_page('ここにスラッグが入ります')):?>
<?php endif;?>

//★固定ページをidで指定する場合
<?php if (is_page(ここにidが入ります)):?>
<?php endif;?>

//★複数の固定ページを指定する場合
<?php if (is_page(array('ここにスラッグが入ります','ここにスラッグが入ります')):?>
<?php endif;?>
//スラッグもしくはidを「array」で囲みます
//スラッグもしくはid同士は「,」で区切ります

固定ページでの表示/非表示を切り替える条件分岐です。
「page.php」などの固定ページ用テンプレートが適用されるページで条件分岐をする際に使用します。
特定の固定ページを指定する場合は、スラッグかidで指定します。
idは、管理画面の固定ページ一覧で、各ページのタイトルにカーソルを合わせると左下に表示されます。(Windowsの場合。Macで表示される位置はわかりません。)
表示された文字列の中の「post=〇〇」の「〇〇」部分がidです。

投稿・カスタム投稿共通の条件分岐

PHP
<?php if (is_single()):?>
<?php endif;?>

//★投稿もしくはカスタム投稿の詳細ページを、スラッグか投稿タイトルで指定する場合
<?php if (is_single('ここにスラッグか投稿タイトルが入ります')):?>
<?php endif;?>

//★投稿もしくはカスタム投稿の詳細ページで指定する場合
<?php if (is_single(ここにidが入ります)):?>
<?php endif;?>

//★複数の投稿もしくはカスタム投稿の詳細ページを指定する場合
<?php if (is_single(array(ここにidが入ります,'ここにスラッグか投稿タイトルが入ります')):?>
<?php endif;?>
//スラッグか投稿タイトルもしくはidを「array」で囲みます
//スラッグか投稿タイトルもしくはid同士は「,」で区切ります

投稿もしくはカスタム投稿の詳細ページでの、表示/非表示を切り替える条件分岐です。
「single.php」などのテンプレートが適用されるページで、条件分岐をする際に使用します。
特定の投稿もしくはカスタム投稿の詳細を指定する場合は、スラッグか投稿タイトル、idで指定します。
idは、管理画面の投稿もしくはカスタム投稿ページ一覧で、各ページのタイトルにカーソルを合わせると左下に表示されます。(Windowsの場合。Macで表示される位置はわかりません。)
表示された文字列の中の「post=〇〇」の「〇〇」部分がidです。

「is_single」と「is_singular」を混同しがちですが、それぞれ役割が違うので注意しています。
ざっくり簡単に言うと、全ての投稿詳細ページに対して使えるのが「is_single」。特定のポストタイプのページを指定するときに使うのが「is_singular」みたいな感じです。

その他の条件分岐

少し変わった条件の際に使用する条件分岐です。

モバイル端末かPC用の条件分岐

PHP
<?php if ( wp_is_mobile() ) ://モバイル端末の場合 ?>
<?php endif;?>

<?php if ( !wp_is_mobile() ) ://モバイル端末ではない(PC)の場合 ?>
<?php endif;?>

//★モバイル端末の場合と、PCの場合を一括で指定するなら
<?php if ( wp_is_mobile() ) ://モバイル端末の場合 ?>
<?php elseif(!wp_is_mobile() ) ://モバイル端末ではない(PC)の場合 ?>
<?php endif;?>

モバイル端末かPCかで表示を切り替えるときに使用する条件分岐です。
どこまでがモバイル端末で、どこからがPCかがイマイチわかりづらいのが難点です。ですが、モバイル端末の場合はソースに出すのも嫌なコードがあるときなどは使用しています。

PCのブラウザでデベロッパーツールを利用して、この条件分岐が機能しているかモバイル端末での表示を確認することがあります。ですが、PCサイズからモバイル端末サイズに切り替えただけだと、条件分岐が正しく反映されないことがあります。その際は、サイズをモバイル端末に切り替えてから一度ページを更新してください。

WordPressにログインしているか条件分岐

PHP
<?php if( is_user_logged_in() ) ://WordPressにログインしている場合 ?>
<?php endif;?>

<?php if ( !is_user_logged_in() ) ://WordPressにログインしていない場合 ?>
<?php endif;?>

//★ログインしているか/していないかを一括で指定するなら
<?php if ( is_user_logged_in() ) ://WordPressにログインしている場合 ?>
<?php elseif(!is_user_logged_in() ) ://WordPressにログインしていない場合 ?>
<?php endif;?>

WordPressにログインしているか/していないかを判別する条件分岐です。
「WP Members」のプラグインを利用したときに、ログインした状態としていない状態で表示を切り替えるために使用していました。

参考サイト

条件分岐のコードは他にもあるので、気が向いたら追記します。