【WordPress】よく使う条件分岐タグをまとめた

if文使うこと、よくありますよね。

その条件分岐に使うタグ、自分用のメモ程度ですがまとめてみました。

is_home()

インデックスページ(トップページ)かどうかをチェックします。

<?php
if(is_home()) {
    // トップページを表示中
    <h1>やってみたら、できた。</h1>
}else{
    // トップページではない
    <p>やってみたら、できた。</p>
}
?>

is_page()

個別の固定ページを表示しているかどうかをチェックします。

<?php
if(is_page('company')) {
    // スラッグが「company」のページを表示中
}
?>

is_category()

カテゴリーページを表示しているかどうかをチェックします。

<?php
if(is_category('blog')) {
    // スラッグが「blog」のカテゴリーページを表示中
}
?>

is_post_type_archive()

カスタム投稿タイプのアーカイブページを表示しているかどうかをチェックします。

<?php
if(is_post_type_archive('item')) {
    // カスタム投稿タイプ「item」のアーカイブページを表示中
}
?>

is_single()

指定された投稿を表示しているかどうかをチェックします。

<?php
if(is_single('17')) {
    // IDが「17」の投稿を表示中
}
?>

is_singular()

個別の投稿を表示しているかどうかをチェックします。

<?php
if(is_singular('item')) {
    // カスタム投稿タイプ「item」の投稿ページを表示中    
}
?>

is_tax()

カスタム分類のアーカイブページを表示しているかどうかをチェックします。

<?php
if(is_tax('brand')) {
    // スラッグ名「brand」タクソノミーのアーカイブページを表示中    
}
?>

特定のページの子ページかどうか

「このページの子ページには共通のコレを表示したい」とか、「親ページと同じのを子ページにも…」などに使います。
WordPressのタグにはそれがないので、functions.phpに以下を記述してタグっぽく作っちゃいます。

functions.php

// is_child_of('スラッグ') で条件分岐
function is_child_of($pagename) {
  if(is_page()) {
    global $post;
    if($post->ancestors) {
      $root = $post->ancestors[count($post->ancestors) - 1];
      $root_post = get_post($root);
      $name = esc_attr($root_post->post_name);
      if($pagename == $name) return true;
    }
  }
  return false;
}

使い方は一緒

<?php
if(is_child_of('company')) {
    // スラッグ名「company」ページを親に持つ子ページを表示中
}
?>

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA