WordPressで押さえておきたい条件分岐

WordPressで押さえておきたい条件分岐

WordPressに「条件分岐」のためのタグがたくさん用意されていているのでよく使用するものをまとめてみました。

目次

  1. 条件分岐とは?
  2. WordPressの条件分岐タグ

1. 条件分岐とは?

PHPで条件を指定しテンプレート内で表示させる内容や、特定のページのみで表示させたいなど、様々な条件によって処理を分岐させることができます。

<?php if(条件): ?>
 //条件に当てはまるときの処理をここに書く
<?php else: ?>
 //条件に当てはまらないときの処理はこっち
<?php endif; ?>

上記は基本的な書き方です。elseの箇所は省略可能なので、下記の様に書くこともできます。

<?php if(条件): ?>
 //条件に当てはまるときの処理をここに書く
<?php endif; ?>

コロンとセミコロン

PHPは文法エラーやちょっとした入力ミスがあるとページが表示されなくなってしまうので、修正する時は注意してください。

  • php if(条件): / php else: - if():else: の後はコロン
  • php endif; - endif; の後はセミコロン

2. WordPressの条件分岐タグ

2-1. メイン(ブログの最新)ページ 

is_home()

<?php if(is_home()): ?>
 //メインページのときの処理をここに書く
<?php endif; ?>

ここでちょっと注意したいのが、上記のままだと「http://uquico.com/page2」など過去記事のページなども条件に含まれてしまうので純粋に「http://uquico.com」とドメインを表示させたい時は以下の様にします。

<?php if(is_home() && !is_paged()): ?>
 //メインページで1ページ目のときの処理をここに書く
<?php endif; ?>

条件の前に「!」を付けると否定的な意味になるので、この場合は2ページ目以降は含めないという条件になります。また、「&&」で条件を繋いでいるので、両方の条件を満たしている時という条件分岐が出来上がりました。

因みに、「||」で条件を区切ると、条件のどちらか一方を満たしている時とすることができます。

2-2. フロントページ

is_front_page()

<?php if(is_front_page()): ?>
 //フロントページのときの処理をここに書く
<?php endif; ?>

WordPressのダッシュボードから「設定」→「表示設定」で、ホームページの表示固定ページに設定している場合は、is_home()ではなく、こちらのis_front_page()を使います。

2-3. 記事ページ

is_single()

<?php if(is_single()): ?>
 //記事ページのときの処理をここに書く
<?php else: ?>
 //それ以外のページでの処理はこっち
<?php endif; ?>

個別の投稿ページ(シングルページ)かどうかを判断します。パラメータ(記事ごとのIDとか)を渡してあげると、もっと細かい条件を追加することもできます。

<?php if(is_single('投稿ID')): ?>
 //記事ページのときの処理をここに書く
<?php else: ?>
 //それ以外のページでの処理はこっち
<?php endif; ?>

特定する投稿ページ(シングルページ)を複数指定したい時はパラメータをカンマで区切って追加していきます。

<?php if(is_single( array('投稿ID','投稿ID','投稿ID'))): ?>
 //記事ページのときの処理をここに書く
<?php else: ?>
 //それ以外のページでの処理はこっち
<?php endif; ?>

2-4. 固定ページ

is_page()

<?php if(is_page()): ?>
 //固定ページのときの処理をここに書く
<?php else: ?>
 //それ以外のページの処理はこっち
<?php endif; ?>

ダッシュボードの「固定ページ」で作成したページです。こちらもパラメータ(IDなど)を渡してあげるともっと細かい条件を追加することができます。

2-5. カテゴリー別ページ

is_category() / in_category()

<?php if(is_category(): ?>
 //カテゴリーページのときの処理をここに書く
<?php else: ?>
 //それ以外のときの処理はこっち
<?php endif; ?>

カテゴリーに関する条件分岐

<?php if(is_category('スラッグ名'): ?>
 //カテゴリーページのときの処理をここに書く

<?php elseif(is_category('wordpress')): ?>
 //wordpressというカテゴリーのときの処理はここ

<?php elseif(in_category('カテゴリー')): ?>
 //指定したカテゴリーに属する記事のときの処理はここ

<?php elseif(!in_category(array(1,2,3))): ?>
 //カテゴリーIDが1,2,3以外のときの処理はここ

<?php else: ?>
 //それ以外のページの処理はこっち
<?php endif; ?>

例えば「wordpress」というカテゴリーで絞りたい場合はis_category('wordpress'):としてあげます。そして、指定したカテゴリーに属する記事の時に特定の処理を行いたいな〜という場合は「is」ではな「in」にしてin_category('カテゴリー','カテゴリー'):とします。さらに、指定したカテゴリーに属さないのページでのみ処理を指定したい場合は!in_category():となります。

2-6. タグ別のページ

is_tag() / has_tag()

<?php if(is_tag(): ?>
 //タグページのときの処理はここに書く
<?php else: ?>
 //それ以外のページでの処理はこっち
<?php endif; ?>

タグに関する条件分岐

<?php if(is_tag('タグID'): ?>
 //タグページのときの処理はここに書く

<?php if(has_tag('タグID')): ?>
 //指定したタグを持つページのときの処理はここ

<?php else: ?>
 //それ以外のページの処理はこっち
<?php endif; ?>

タグIDの代わりにタグのスラッグ名も入れられます。

2-7. アーカイブページ

is_archive()

<?php if(is_archive()): ?>
 //アーカイブページのときの処理はここに書く
<?php else: ?>
 //それ以外のページの処理はこっち
<?php endif; ?>

アーカイブページとは①カテゴリー、②タグ、③日付などで分類したページ一覧のことです。

<?php if(is_archive() && !is_paged()): ?>
 //アーカイブページで1ページ目のときの処理をここに書く
<?php else: ?>
 //それ以外のページの処理はこっち
<?php endif; ?>

2-8. 検索結果ページ

is_search()

//「search.php」に下記を記述
<?php if (is_search()): ?>

<?php global $wp_query;
      $total_results = $wp_query->found_posts;
      $search_query = get_search_query();
?>
<h1>"<?php the_search_query(); ?>" の検索結果: <?php echo $total_results; ?>件</h1>

検索フォームを設定する時に使用する「searchform.php」の結果を出力する「search.php」に検索結果を表示しているかの条件分岐タグis_search()を記述します。検索フォームについてはWordPressオリジナルテーマの作り方で書いているのでよければ見てみてください。

2-9. モバイルとPCで表示を切り替え

<?php if(wp_is_mobile(): ?>
 //モバイル(タブレット含む)からのアクセス時の処理はここに書く
<?php else: ?>
 //PCからのアクセス時の処理はこっち
<?php endif; ?>

WordPressの条件分岐は他にもたくさんあるので、公式ドキュメント参考にしてみてください。

WordPress Codex

Leave a Comment