WordPressを色々いじって行くと必ず「トップページではサイドバーなし」で、「固定ページや個別投稿ページではサイドバーを表示」と言った感じで現在のページに応じて処理を変えたくなってきます。そこで登場するのがWordPressの「条件分岐タグ」。
トップページや個別投稿ページを判別して処理を分けられるのはもちろんですが、現在見ている端末がモバイル(スマホ・タブレット)かも判別できたりとても重宝します。
「条件分岐タグ」はかなりたくさんありますが、よく使うものはある程度絞られてきます。今回は「これだけは覚えておきたい!」という条件分岐タグをまとめてみました。
目次
条件分岐の基本的な書き方
WordPressはPHPを使ったCMS(コンテンツマネジメントシステム)ですので、条件分岐自体はPHPで書きます。そして条件分岐を指定する際に、WordPress独自の「条件分岐タグ」を使う!と覚えておきましょう。
POINT
- 条件分岐自体はPHPで書く
- 条件分岐の条件判定にWordPress独自の条件分岐タグを使う
基本的な書き方は下記のようになります。
基本
<?php if(条件1):?> 条件1に当てはまる場合 <?php elseif(条件2):?> 条件2に当てはまる場合 <?php else:?> 条件1にも条件2にも当てはまらない場合 <?php endif;?>
条件が1つだけであれば「elseif」「else」は省略可能です。逆に条件を増やしたい場合は「elseif」で増やすことができます。
条件分岐の書き方:論理演算子
論理演算子を使ってより細かく条件分岐を指定することができます。
条件1もしくは(or)条件2
<?php if(条件1 || 条件2):?> 条件1もしくは条件2に当てはまる場合 <?php endif;?>
条件1か条件2どちらかに当てはまる条件分岐は「||」を使います。
条件1かつ(and)条件2
<?php if(条件1 && 条件2):?> 条件1と条件2、両方に当てはまる場合 <?php endif;?>
条件1と条件2、両方の条件に当てはまる条件分岐は「&&」を使います。
条件1と条件2が等しい
<?php if(条件1 == 条件2):?> 条件1と条件2が等しい場合 <?php endif;?>
条件1と条件2が等しい場合の条件分岐は「==」を使います。
条件1と条件2が等しくない
<?php if(条件1 !== 条件2):?> 条件1と条件2が等しくない場合 <?php endif;?>
上記の逆で、条件1と条件2が等しくない場合の条件分岐は「!==」を使います。
条件1ではない
<?php if(!条件1):?> 条件1ではない場合 <?php endif;?>
条件の最初に「!」をつけるとその条件に当てはまらない場合の条件分岐となります。
よく使う条件分岐
では基本を踏まえた上で、よく使う条件分岐タグを見ていきましょう。
トップページ
<?php if ( is_front_page() || is_home() ) : ?> トップページで行う処理を書く <?php endif; ?>
トップページだけメインビジュアルにスライダーを表示するといった場合に使います。
ちなみに「is_front_page()」と「is_home()」って両方書かないとダメなの?違いは何なの?と思う方、下記の参考サイトなどで詳しく書かれているので、気になる方は見てみてください。
is_home()とis_front_page()の条件分岐タグの違い-思考の葉
is_home()とis_front_page()の違いって何?-100arttoe
固定ページ
全ての固定ページ
<?php if ( is_page() ) : ?> 全ての固定ページで行う処理を書く <?php endif; ?>
特定の固定ページ(ID)
<?php if ( is_page(5) ) : ?> IDが5の固定ページで行う処理を書く <?php endif; ?>
IDの調べ方は管理画面の固定ページの一覧ページでマウスオーバーしてステータスバーに表示される「post=1234」のように「post=」の後の数字がIDになります。もしくは固定ページ編集画面のURLを確認して、同じく「post=」の後の数字を確認します。
※ブラウザの表示設定でステータスバーが表示されるようにしておく必要があります。
特定の固定ページ(スラッグ)
<?php if ( is_page('about') ) : ?> スラッグが「about」の固定ページで行う処理を書く <?php endif; ?>
スラッグは固定ページの編集画面で入力した「スラッグ」になります。
特定の固定ページ(タイトル)
<?php if ( is_page('このサイトについて') ) : ?> タイトルが「このサイトについて」の固定ページで行う処理を書く <?php endif; ?>
ページタイトルを条件にすることもできます。
複数の固定ページ
<?php if ( is_page(array(5,'about','このサイトについて')) ) : ?> IDが「5」、もしくはスラッグが「about」、もしくはタイトルが「このサイトについて」の固定ページで行う処理を書く <?php endif; ?>
複数の条件を指定したい場合は「array()」を使って配列として書きます。「ID」、「スラッグ」、「タイトル」を合わせた指定もできます。
個別投稿ページ
全ての個別投稿ページ
<?php if ( is_single() ) : ?> 全ての個別投稿ページで行う処理を書く <?php endif; ?>
特定の個別投稿ページ(ID)
<?php if ( is_single(1) ) : ?> IDが1の個別投稿ページで行う処理を書く <?php endif; ?>
特定の個別投稿ページ(スラッグ)
<?php if ( is_single('hello-world') ) : ?> スラッグが「hello-world」の個別投稿ページで行う処理を書く <?php endif; ?>
特定の個別投稿ページ(タイトル)
<?php if ( is_single('Hello world!') ) : ?> タイトルが「Hello world!」の個別投稿ページで行う処理を書く <?php endif; ?>
複数の個別投稿ページ
<?php if ( is_single(array(1,'hello-world','Hello world!')) ) : ?> IDが「1」、もしくはスラッグが「hello-world」、もしくはタイトルが「Hello world!」の個別投稿ページで行う処理を書く <?php endif; ?>
固定ページ、個別投稿ページ、添付ファイルページ
全て
<?php if ( is_singular() ) : ?> //固定ページ、もしくは個別投稿ページ、もしくは添付ファイルページで行う処理を書く <?php endif; ?>
特定のカスタム投稿タイプの個別投稿ページ
<?php if ( is_singular('news') ) : ?> //「news」というカスタム投稿タイプの個別投稿ページで行う処理を書く <?php endif; ?>
複数のカスタム投稿タイプの個別投稿ページ
<?php if ( is_singular( array('news','event') ) ) : ?> //「news」、もしくは「event」というカスタム投稿タイプの個別投稿ページで行う処理を書く <?php endif; ?>
アーカイブページ
全てのアーカイブページ
<?php if ( is_arhive() ) : ?> アーカイブページで行う処理を書く <?php endif; ?>
アーカイブページには、この後記載するカテゴリーやタグ、カスタム投稿タイプのアーカイブ、カスタム分類のアーカイブ、作成者別、日付別など全てのアーカイブページが含まれます。
カテゴリーページ
全てのカテゴリーページ
<?php if ( is_category() ) : ?> カテゴリーページで行う処理を書く <?php endif; ?>
特定のカテゴリーページ(ID)
<?php if ( is_category(2) ) : ?> IDが「2」のカテゴリーページで行う処理を書く <?php endif; ?>
IDの調べ方は管理画面のカテゴリーの一覧ページでマウスオーバーしてステータスバーに表示される「tag_ID=2」のように「tag_ID=」の後の数字がIDになります。もしくはカテゴリー編集画面のURLを確認して、同じく「tag_ID=」の後の数字を確認します。
※ブラウザの表示設定でステータスバーが表示されるようにしておく必要があります。
特定のカテゴリーページ(スラッグ)
<?php if ( is_category('sports') ) : ?> スラッグが「sports」のカテゴリーページで行う処理を書く <?php endif; ?>
特定のカテゴリーページ(カテゴリー名)
<?php if ( is_category('スポーツ') ) : ?> カテゴリー名が「スポーツ」のカテゴリーページで行う処理を書く <?php endif; ?>
複数のカテゴリーページ
<?php if ( is_category( array(2,'sports','スポーツ') ) ) : ?> //IDが「2」、もしくはスラッグが「sports」、もしくはカテゴリー名が「スポーツ」というカテゴリーページで行う処理を書く <?php endif; ?>
タグページ
全てのタグページ
<?php if ( is_tag() ) : ?> 全てのタグページで行う処理を書く <?php endif; ?>
特定のタグページ(ID)
<?php if ( is_tag(83) ) : ?> IDが「83」のタグページで行う処理を書く <?php endif; ?>
特定のタグページ(スラッグ)
<?php if ( is_tag('wordpress') ) : ?> スラッグが「wordpress」のタグページで行う処理を書く <?php endif; ?>
特定のタグページ(タグ名)
<?php if ( is_tag('ワードプレス') ) : ?> タグ名が「ワードプレス」のタグページで行う処理を書く <?php endif; ?>
複数のタグページ
<?php if ( is_tag( array(83,'wordpress','ワードプレス') ) ) : ?> //IDが「83」、もしくはスラッグが「wordpress」、もしくはタグ名が「ワードプレス」というタグページで行う処理を書く <?php endif; ?>
検索結果ページ
<?php if ( is_search() ) : ?> 検索結果ページで行う処理を書く <?php endif; ?>
404ページ
<?php if ( is_404() ) : ?> 404ページで行う処理を書く <?php endif; ?>
アイキャッチ画像
<?php if ( has_post_thumbnail() ) : ?> アイキャッチ画像指定されている場合 <?php the_post_thumbnail(); ?> <?php else: ?> アイキャッチ画像指定されていない場合に代替画像を表示 <?php endif; ?>
覚えておくと便利
ここからはこんな条件分岐もあるよというものを紹介していきます。
作成者ページ
全ての作成者ページ
<?php if ( is_author() ) : ?> 作成者ページで行う処理を書く <?php endif; ?>
特定の作成者ページ(ID)
<?php if ( is_author(2) ) : ?> IDが「2」の作成者ページで行う処理を書く <?php endif; ?>
IDの調べ方は管理画面のユーザーの一覧ページでマウスオーバーしてステータスバーに表示される「user_id=2」のように「user_id=」の後の数字がIDになります。もしくはユーザー編集画面のURLを確認して、同じく「user_id=」の後の数字を確認します。
※ブラウザの表示設定でステータスバーが表示されるようにしておく必要があります。
特定の作成者ページ(ユーザー名)
<?php if ( is_author('master') ) : ?> ユーザー名が「master」の作成者ページで行う処理を書く <?php endif; ?>
複数の作成者ページ
<?php if ( is_author( array(2,'master') ) ) : ?> //IDが「2」、もしくはユーザー名が「master」の作成者ページで行う処理を書く <?php endif; ?>
2ページ目以降
<?php if ( is_paged() ) : ?> 2ページ目以降のページで行う処理を書く <?php endif; ?>
カスタム投稿タイプのアーカイブページ
<?php if ( is_post_type_archive() ) : ?> カスタム投稿タイプの一覧ページで行う処理を書く <?php endif; ?>
特定のカスタム投稿タイプのアーカイブページ
<?php if ( is_post_type_archive('news') ) : ?> 投稿タイプが「news」のアーカイブページで行う処理を書く <?php endif; ?>
複数のカスタム投稿タイプのアーカイブページ
<?php if ( is_post_type_archive( array('news','event') ) ) : ?> 投稿タイプが「news」、もしくは「event」のアーカイブページで行う処理を書く <?php endif; ?>
カスタム分類ページ
<?php if ( is_tax() ) : ?> カスタム分類「news_cat」の一覧ページで行う処理を書く <?php endif; ?>
特定のカスタム分類のアーカイブページ
<?php if ( is_tax('works') ) : ?> カスタム分類が「works」のアーカイブページで行う処理を書く <?php endif; ?>
複数のカスタム投稿タイプのアーカイブページ
<?php if ( is_tax( array('works','private') ) ) : ?> カスタム分類が「works」、もしくは「private」のアーカイブページで行う処理を書く <?php endif; ?>
モバイル
<?php if ( wp_is_mobile() ) : ?> モバイル(スマホ・タブレット)で行う処理を書く <?php endif; ?>
まとめ
- 条件分岐自体はPHPで書く
- 条件分岐の条件判定にWordPress独自の条件分岐タグを使う
条件分岐タグを使いこなしてレイアウトやデザインを変えたりしていくと、WordPressのカスタマイズが楽しくなってくるので、よく使いそうなものはこの機会にぜひ覚えてみてくださいね。
冒頭のとおり、まだたくさんの条件分岐タグがありますので、興味がある方はWordPress Codexを見てみてください。
条件分岐タグ – WordPress Codex 日本語版