こんにちは、メディア事業部ウェブディレクターのコネル飯塚です。
WordPressの条件分岐タグ (Conditional Tag) は、特定の条件(ページ)の場合に、特定のページ内容を表示させることができます。
条件分岐タグの使用例
例えば、個別投稿ページで特定のカテゴリーに属する記事の終わりにだけ、広告やバナーを表示させたい場合に、「in_category() 」を使うことで簡単に条件を設定することができます。
そのカテゴリーに属する記事ページにだけ、関連する商品の広告を表示させるなどが可能となるので、関連のないページには表示させないなど工夫次第で、とても便利な使い方ができますよね!
カテゴリーIDが「7」に属するページにのみ表示させたい広告があるとします。
テンプレートファイル内(ここでは記事ページを表示させるために使用しているsingle.phpなど)の該当箇所に下記のコードを追加します。
<?php if ( in_category( '7' )) : ?>
// 表示させたい広告内容を記述する
<?php endif; ?>
このように条件を設定することができます。
それでは、覚えておくと便利な条件分岐タグを含め、詳しく説明していきたいと思います。
条件分岐タグの使い方
条件分岐タグである「関数」を入れることで、さまざまな条件を設定することができます。
if文を用いた条件分岐タグの基本的な使い方は下記になります。
<?php if (関数) : ?>
// 表示させたい内容を記述する
<?php endif; ?>
先ほどの「カテゴリーIDが『7』に属するページにのみ表示させたい」など関数に引数(パラメーター)を指定することにより、さらに細かく条件を設定することができます。
他にも「トップページにのみ表示させたいコンテンツがある」「インデックスさせたくないページに個別にnoindexを入れておきたい」など様々な要望があると思いますが、WordPressにはたくさんの条件分岐タグが用意されていますので、下記を参考にして使用するようにしてください。
様々な条件分岐タグ
トップ(フロント)ページ
is_front_page()
投稿ページ、固定ページに関わらず、サイトのトップページかどうかを判定する。
トップページの表示に 「最新の投稿」を設定しているメインブログページが当てはまります。
また、トップページとして固定ページを設定している場合は、その固定ページが当てはまります。
メインページ
is_home()
ホームとなるページやメインのブログページかどうかを判定する。
もしトップ(フロント)ページに固定ページを設定している場合、それとは別に投稿ページとして設定しているページが当てはまります。
個別投稿ページ
is_single()
個別投稿(記事)ページかどうかを判定する。固定ページには当てはまらない。
is_single( ‘5’ )
投稿IDが「5」の記事が当てはまります。
is_single( array( 5, 10, 15 ) )
投稿IDが「5」「10」「15」のいずれかが、当てはまるかどうかを判定する。
is_single( ‘white-seo’ )
投稿IDと同じように引数(パラメーター)に投稿タイトルや投稿スラッグを指定することも出来ます。
is_single( array( 5, ‘white-seo’, ‘white-blog’ ) )
投稿ID、タイトル、スラッグを複数指定することも可能です。指定したいずれかに当てはまるかどうかを判定する。
先頭固定表示の投稿
is_sticky()
投稿を先頭に固定表示しているページが当てはまります。投稿編集ページのチェックボックスにチェックがついているページです。
固定ページ
is_page()
固定ページかどうかを判定する。post_type が 「page」となっているページです。
is_page( ‘5’ )
IDが「5」の固定ページが当てはまります。
is_page( array( 5, 10, 15 ) )
IDが「5」「10」「15」の固定ページのいずれかが、当てはまるかどうかを判定する。
is_page( ‘white-seo’ )
IDと同じように引数(パラメーター)に固定ページのタイトルやスラッグを指定することも出来ます。
is_page( array( 5, ‘white-seo’, ‘white-blog’ ) )
固定ページのID、タイトル、スラッグを複数指定することも可能です。指定したいずれかに当てはまるかどうかを判定する。
カテゴリーページ
is_category()
カテゴリーページかどうかを判定する。
is_category( ‘5’ )
カテゴリーIDが「5」のアーカイブページが当てはまります。
※「is」と「in」では意味が異なりますのでしっかり区別しましょう。
is_category( array( 5, 10, 15 ) )
カテゴリーIDが「5」「10」「15」のアーカイブページのいずれかが、当てはまるかどうかを判定する。
is_category( ‘white-seo’ )
カテゴリーIDと同じように引数(パラメーター)にカテゴリー名やスラッグを指定することも出来ます。
is_category( array( 5, ‘white-seo’, ‘white-blog’ ) )
カテゴリーID、カテゴリー名、スラッグを複数指定することも可能です。指定したいずれかに当てはまるかどうかを判定する。
in_category( ‘7’ )
カテゴリーIDが「7」に属するアーカイブページが当てはまります。
in_category( array( 7, 10, 15 ) )
カテゴリーIDが「7」「10」「15」に属するアーカイブページのいずれかが、当てはまるかどうかを判定する。
タグページ
is_tag()
タグのアーカイブページかどうかを判定する。
is_tag( ‘white-seo’ )
引数(パラメーター)にタグのスラッグを指定することも出来ます。
is_tag( ‘white-seo’, ‘white-blog’, ‘white-web’ )
タグのスラッグを複数指定することも可能です。指定したいずれかに当てはまるかどうかを判定する。
ユーザーページ
is_author()
ユーザー(投稿者)ページかどうかを判定する。
is_author( ‘5’ )
ユーザーIDが「5」のユーザーページが当てはまります。
is_author( ‘whitebear’ )
ユーザーIDと同じように引数(パラメーター)にニックネームやナイスネームを指定することも出来ます。
is_author( array( 5, ‘whitebear’, ‘whitepanda’ ) )
ユーザーID、ニックネーム、ナイスネームを複数指定することも可能です。指定したいずれかに当てはまるかどうかを判定する。
日付別ページ
is_date()
日付別のアーカイブページかどうかを判定する。
is_year()
年別のアーカイブページかどうかを判定する。
is_month()
月別のアーカイブページかどうかを判定する。
is_time()
毎時別、毎分別、毎秒別のアーカイブページかどうかを判定する。
アーカイブページ
is_archive()
各アーカイブページかどうかを判定する。カテゴリー、タグ、ユーザー、日付別などがアーカイブページに当てはまります。
検索結果ページ
is_search()
検索結果ページかどうかを判定する。
404ページ
is_404()
“HTTP 404: Not Found”エラーページかどうかを判定する。
複数にわたるページ
is_paged()
投稿一覧やアーカイブページなどが、複数ページに分かれている場合の2ページ目以降のページかどうかを判定する。
しかし、1つの投稿ページや固定ページが複数ページに分かれている場合は当てはまりません。
添付ファイルページ
is_attachment()
アップロードした画像などの添付ファイルページかどうかを判定する。
条件分岐タグで複数条件を指定する
条件分岐タグを使って、複数の条件を指定して表示内容を切り替えるやり方を説明します。
<?php if (関数) : ?>
// 関数の条件に当てはまる場合に表示させたい内容を記述する
<?php else; ?>
// 関数の条件に当てはまる場合以外に表示させたい内容を記述する
<?php endif; ?>
例えば、個別投稿(記事)ページとそれ以外の場合で表示させる内容を切り替えたい。
<?php if ( is_single()) : ?>
// 記事ページの場合のみ表示させたい内容を記述する
<?php else; ?>
// 記事ページ以外の場合に表示させたい内容を記述する
<?php endif; ?>
特定の記事ページを指定することも出来ます。
例えば、投稿ID「5」の記事ページとそれ以外の場合で表示させる内容を切り替えたい。
<?php if ( is_single( ‘5’ )) : ?>
// 投稿ID「5」の記事ページにのみ表示させたい内容を記述する
<?php else; ?>
// 投稿ID「5」の記事ページ以外に表示させたい内容を記述する
<?php endif; ?>
次に、特定の2つのページのみに異なる内容を表示させたい。
2つ目以降の条件に「elseif」を使うことで可能になります。
<?php if ( is_single( ‘5’ )) : ?>
// 投稿ID「5」の記事ページにのみ表示させたい内容を記述する
<?php elseif ( is_single( ’10’ )) : ?>
// 投稿ID「10」の記事ページにのみ表示させたい内容を記述する
<?php endif; ?>
上記の条件にプラスして、さらに「それ以外の場合」でも表示内容がある場合。
<?php if ( is_single( ‘5’ )) : ?>
// 投稿ID「5」の記事ページにのみ表示させたい内容を記述する
<?php elseif ( is_single( ’10’ )) : ?>
// 投稿ID「10」の記事ページにのみ表示させたい内容を記述する
<?php elseif ( is_single( ’15’ )) : ?>
// 投稿ID「15」の記事ページにのみ表示させたい内容を記述する
<?php else; ?>
// 投稿ID「5」「10」「15」の記事ページ以外に表示させたい内容を記述する
<?php endif; ?>
まとめ 条件分岐タグと引数の使い方
このように様々な条件分岐タグがありますが、用途に応じた関数を使いましょう。
そして引数にID、タイトル、スラッグなどを指定することでさらに細かい条件を設定することが出来ます。
SEOを意識した場合、重複コンテンツを避けるように使用することも出来ます。また特定のページにのみアドセンス広告を入れるなんて使い方も出来ますよね!
工夫次第で様々な表現が可能なので、あなたのサイトが求める状態になるように、自由にカスタマイズしてみてください。