WordPress 条件分岐タグ

  Code Tips minimum Theme

「条件分岐タグ」を使って、特定のページで表示を変更してみます。

条件分岐タグ (Conditional Tag) は、テンプレートファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使います。

WordPress Codex : 条件分岐タグ

 

WordPress 投稿の表示」では、is_single()is_home() を使って表示を条件分岐しました。
is_single() が true の時は「個別の投稿ページ」を表示し、is_home() が true の時は「ブログ投稿インデックスページ(サイトのフロントページ)」用の表示を出力するようにしました。

 

今回は、【index.php】の中で is_category()is_tag()is_search() を使って、それぞれの条件の時のページタイトル表示を変更してみます。

 

 

カテゴリーのアーカイブページ

is_category() を使ってカテゴリーのアーカイブページを表示しているかどうかを判定します。

is_category() の結果が true だった場合は、get_the_category() を使ってページタイトルにカテゴリー名を表示させます。

【index.php】

<?php if (is_category()) : ?>
<?php
  $category = get_the_category();
  $cat_name = $category[0]->cat_name;
  echo '<h2>' . $cat_name . '</h2>';
?>
<?php endif; ?>

 

is_category()

WordPress Codex : 関数リファレンス/is category

is_category($category);

 

パラメータ
引数 説明
$category
mixed
オプション
カテゴリー ID、カテゴリーのタイトル、カテゴリーのスラッグ。またはそれらの配列。
初期値: なし
戻り値
真偽値 カテゴリーアーカイブページであれば true 、そうでなければ false

 

カテゴリー名の取得と表示

条件分岐 is_category()true だった場合、そのカテゴリー名をページタイトルにしたいので、get_the_category() を使ってカテゴリー名を取得します。

オブジェクト(カテゴリー)の配列を返します。各オブジェクトは現在の投稿が属するカテゴリーを表します。 このタグはパラメータとして投稿 ID を渡すことで、ループの外でも使うことができます。

WordPress Codex : テンプレートタグ/get the category

get_the_category( $id )

 

パラメータ
引数 説明
$id
整数
オプション
投稿 ID
初期値: $post->ID (現在の投稿の ID)
戻り値
配列 カテゴリーのオブジェクトの配列

 

返されるオブジェクトのメンバー変数 説明
term_id
整数
カテゴリー ID
name
文字列
カテゴリー名
slug
文字列
カテゴリーのスラッグ
term_group
整数
カテゴリーのグループ
term_taxonomy_id
整数
カテゴリーのタクソノミー ID
taxonomy
文字列
タクソノミー名 ‘category’
description
文字列
カテゴリーの説明
parent
整数
親カテゴリーの ID
count
整数
カテゴリーに登録されている投稿の数
object_id
整数
オブジェクト ID
cat_ID
整数
カテゴリー ID (term_id にも同じ値が入る)
category_count
整数
カテゴリーに登録されている投稿の数(count にも同じ値が入る)
category_description
文字列
カテゴリーの説明(description にも同じ値が入る)
cat_name
文字列
カテゴリー名(name にも同じ値が入る)
category_nicename
文字列
カテゴリースラッグ名 – カテゴリー名から生成されたスラッグ(slug にも同じ値が入る)
category_parent
整数
親カテゴリーの ID – 親がなければ 0 が入る(parent にも同じ値が入る)

 

 

タグのアーカイブページ

is_tag() を使ってタグのアーカイブページを表示しているかどうかを判定します。

is_tag() の結果が true だった場合は、single_tag_title() を使ってページタイトルにタグ名を表示させます。

【index.php】

<?php elseif (is_tag()) : ?>
<h2><?php single_tag_title('TAG : '); ?></h2>
<?php endif; ?>

 

is_tag()

WordPress Codex : 関数リファレンス/is tag

is_tag($tag)

 

パラメータ
引数 説明
$tag
mixed
オプション
タグ ID、名前、スラッグ。またはそれらの配列。
初期値: なし
戻り値
真偽値 カテゴリーアーカイブページであれば true 、そうでなければ false

 

タグ名の取得と表示

条件分岐 is_tag()true だった場合、そのタグ名をページタイトルにしたいので、single_tag_title() を使ってタグ名を取得します。

WordPress Codex : テンプレートタグ/single tag title

single_tag_title( $prefix, $display )

 

パラメータ
引数 説明
$prefix
mixed
オプション
タグタイトルの前に出力するテキスト。
初期値: なし
$display
mixed
オプション
タグタイトルを表示するか( true )、PHP で扱えるように値として返すか( false )。
初期値:true

 

検索結果の一覧ページ

is_search() を使ってタグのアーカイブページを表示しているかどうかを判定します。

is_search() の結果が true だった場合は、the_search_query() を使ってページタイトルに検索キーワードを表示させます。

【index.php】

<?php if (is_search()) : ?>
<h2>SEARCH KEY WORDS : <?php the_search_query() ?></h2>
<?php endif; ?>

 

is_search()

WordPress Codex : 関数リファレンス/is search

is_search()

 

パラメータ

なし

 

戻り値
真偽値 検索結果ページであれば true 、そうでなければ false

 

検索キーワードの表示

条件分岐 is_search()true だった場合、その検索キーワードをページタイトルにしたいので、the_search_query() を使って検索キーワードを取得します。

WordPress Codex : テンプレートタグ/the search query

the_search_query()

 

Code Tips minimum Theme

【index.php】

<?php get_header(); ?>

  <?php if (is_category()) : ?>
  <?php
    $category = get_the_category();
    $cat_name = $category[0]->cat_name;
    echo '<h2>' . $cat_name . '</h2>';
  ?>

  <?php elseif (is_tag()) : ?>
  <h2><?php single_tag_title('TAG : '); ?></h2>

  <?php elseif (is_search()) : ?>
  <h2>SEARCH KEY WORDS : <?php the_search_query() ?></h2>

  <?php endif ?>

  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

  <?php the_title( '<h3><a href="' . esc_url( get_permalink() ) . '">', '</a></h3>' ); ?>

  <?php if(has_post_thumbnail()) : ?>
  <?php the_post_thumbnail(); ?>
  <?php endif; ?>

  <?php echo get_the_date(); ?>

  <?php endwhile; ?>
  <?php
    $pagination_param = array(
      'mid_size' => 2,
      'prev_text' => '&lt;',
      'next_text' => '&gt;',
      'screen_reader_text' => 'Page Navigation'
    );
    the_posts_pagination($pagination_param);
  ?>
  <?php endif; ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>