【WordPress】便利で面白い条件分岐タグの基本と使い方

条件分岐タグ-アイキャッチ
記事内に広告を含むことがあります。
きなこ
きなこ

Topページのみヘッダーを表示するということはできるの?

こばゆた
こばゆた

そういう時は条件分岐タグというものを使うとできるよ!

条件分岐タグとはさまざま条件を設定することでページに応じて内容を変えることができる大変便利なタグのことだよ(説明口調)

ページごとログインの有無などで

  • テキストを変える
  • CSSを変える
  • サイドバーを出す

などといったことができます。

今日のテーマ

  • 条件分岐タグの基本がわかる
  • ページごとに表示が変えられるようになる
こばゆた
こばゆた

今回の記事では使い方次第で面白い使い方ができる条件分岐タグについて解説していきます。

スポンサーリンク

1.書き方

基本的には以下のように書きます。

<?php if(条件分岐タグ('パラメータ')): ?>
  <!-- 条件を満たす時の処理 -->
<?php endif; ?>
こばゆた
こばゆた

次からは条件分岐タグの種類を見ていきます

スポンサーリンク

2.条件分岐タグの種類

2-1.ページごとに使用する分岐タグ

条件分岐タグ内容
is_home()メインページが表示されている場合
is_front_page()front-pageが設定されていてfront-pageの場合
is_single()記事ページの場合
is_page()固定ページの場合
is_archive()アーカイブページの場合
is_category()カテゴリーページの場合
こばゆた
こばゆた

ifの後ろの( )内に入るタグです

例)Topページの時

<?php if(is_home()): ?>
  <!-- Topページの時の処理 -->
<?php endif; ?>

2-2.日付ページごとの分岐タグ

条件分岐タグ内容
is_year()年アーカイブ
is_month()月アーカイブ
is_day()日別アーカイブ
is_time()時分アーカイブ

他にもたくさんあるので興味のあるかたはこちらから見てみてください(投げやり)

https://wpdocs.osdn.jp/%E6%9D%A1%E4%BB%B6%E5%88%86%E5%B2%90%E3%82%BF%E3%82%B0

3.パラメータに書くもの

タグの後ろの()の中にはパラメータを書くことで記事ページや固定ページのID、タイトルやスラッグなどを記入し細かな使い分けをすることができます。

例1)特定の記事に関しての条件分岐

<?php if(is_single(id番号)): ?>
  <!-- id番号が〇〇の記事ページの時の処理 -->
<?php endif; ?>

例2)特定の固定ページに関しての条件分岐

<?php if(is_page('スラッグ名')): ?>
  <!-- スラッグが〇〇の固定ページの時の処理 -->
<?php endif; ?>

例3)複数のページに関しての条件分岐その1

複数のページを分岐をさせたいときはarray()を使ってカッコ内に記事idやスラッグを入れます。

<?php if(is_single(array(1, 12, 19))): ?>
  <!-- スラッグが1, 12, 19の投稿ページの時の処理 -->
<?php endif; ?>

例4)複数のページに関しての条件分岐その2

スラッグと記事idも組み合わせることもできます。

<?php if(is_page(array('スラッグ名'), id番号)): ?>
  <!-- スラッグが〇〇とid番号が〇〇の固定ページの時の処理 -->
<?php endif; ?>

例5)複数のページに関しての条件分岐その3

JavaScriptなどの他の言語で出てきたものと同様に細かく分岐をさせることもできます。

<?php if(条件1):?>
  条件1を満たす場合
<?php elseif(条件2):?>
  条件2を満たす場合
<?php else:?>
  どちらの条件も満たさない場合
<?php endif;?>   
こばゆた
こばゆた

書く順番に気をつけないと狙った動きにならないことがあるので注意しましょう。

例5)複数のページに関しての条件分岐その4

「かつ」、「または」というものも同様に使うことができます。

<?php if(is_home() || is_front_page()): ?>
  <!-- トップページかフロントページの時の処理 -->
<?php endif; ?>
こばゆた
こばゆた

最後に冒頭で話してたTopページのみヘッダーを表示する設定をやってみました

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vegas/2.5.4/vegas.min.css">
  <?php wp_head(); ?>
</head>

<body>

<div id="container">

<?php if(is_home() || is_front_page()): ?>
<header>
<h1 id="logo">
  <a href="<?php echo home_url(); ?>">
    <img src="<?php echo esc_url( get_theme_file_uri() ); ?>/images/logo.png" alt="サンプル不動産">
  </a>
</h1>

  <div id="menubar">
    <nav>
      <ul>
        <li><a href="list.html">売買物件</a></li>
        <li><a href="list.html">賃貸物件</a></li>
        <li><a href="list.html">テナント</a></li>
        <li><a href="list.html">駐車場</a></li>
      </ul>
    </nav>
  </div>

  <ul class="btn">
    <li><a href="<?php echo home_url(); ?>/contact/">お問い合わせ</a></li>
  </ul>
</header>

<?php endif; ?>
きなこ
きなこ

Topページだけヘッダーが表示されるようになった!

4.まとめ

条件を指定することでページごとに内容を変えることができるタグ

<?php if(条件分岐タグ('パラメータ')): ?>
  <!-- 条件を満たす時の処理 -->
<?php endif; ?>

条件に入るタグ

条件分岐タグ内容
is_home()メインページが表示されている場合
is_front_page()front-pageが設定されていてfront-pageの場合
is_single()記事ページの場合
is_page()固定ページの場合
is_archive()アーカイブページの場合
is_category()カテゴリーページの場合

細かく指定する場合

  • パラメータにはID名やスラッグ名などが入る
  • array()を使って配列にして、複数の条件を指定できる
  • 「かつ」、「または」で指定することができる
<?php if(is_single(id番号)): ?>
  <!-- id番号が〇〇の記事ページの時の処理 -->
<?php endif; ?>
<?php if(is_page(array('スラッグ名'), id番号)): ?>
  <!-- スラッグが〇〇とid番号が〇〇の固定ページの時の処理 -->
<?php endif; ?>
<?php if(is_home() || is_front_page()): ?>
  <!-- トップページかフロントページの時の処理 -->
<?php endif; ?>

複数の条件分岐のパターン

<?php if(条件1):?>
  条件1を満たす場合
<?php elseif(条件2):?>
  条件2を満たす場合
<?php else:?>
  どちらの条件も満たさない場合
<?php endif;?>   

WordPressをもっと学びたい方はこちらもオススメです!

コメント