WordPressで特定のページや投稿タイプを判別する方法

WordPress / PHP
WordPress学習におすすめの書籍

WordPressを使っていると、特定のページや投稿タイプに対して条件分岐を行いたいことがよくあります。ここでは、様々なシナリオでの条件分岐のコードを紹介します。

固定ページの判別

まず、現在表示されているページが固定ページかどうかを判別する方法です。

PHP
<?php if(is_page()): ?>
  <!-- 固定ページの場合の処理 -->
<?php endif; ?>

特定の固定ページの判別

特定の固定ページ(ここでは「menu」)を判別する方法です。

PHP
<?php if(is_page('menu')): ?>
  <!-- 固定ページ「menu」の場合の処理 -->
<?php endif; ?>

特定の投稿タイプの判別

特定の投稿タイプ(ここでは「topics」)を判別する方法です。

PHP
<?php if(get_post_type() == 'topics'): ?>
  <!-- 投稿タイプが「topics」の場合の処理 -->
<?php endif; ?>

特定のカスタム投稿タイプのアーカイブページの判別

特定のカスタム投稿タイプ(ここでは「column」)のアーカイブページを判別する方法です。

PHP
<?php if( is_post_type_archive( 'column' ) ) :?>
  <!-- カスタム投稿タイプ「column」のアーカイブページの場合の処理 -->
<?php endif; ?>

カスタム投稿のカテゴリー一覧ページの判別

特定のタクソノミーとタームを判別する方法です。

PHP
<?php if( is_tax('column_category','food') ):?>
  <!-- タクソノミーが「column_category」、タームが「food」の場合の処理 -->
<?php endif; ?>

特定の固定ページとその子ページの判別

特定の固定ページ(ここでは「recruit」)とその子ページを判別する方法です。

PHP
<?php if(is_page('recruit') || page_is_ancestor_of('recruit')): ?>
  <!-- 固定ページ「recruit」またはその子ページの場合の処理 -->
<?php endif; ?>

特定のページとその下層のみを指定する関数

最後に、functions.phpに特定のページとその下層ページを判別する関数を追加する方法です。

PHP
// 特定のページとその下層のみを指定する関数
function page_is_ancestor_of($slug){
    global $post;

    // 親か判別したい固定ページスラッグからページ情報を取得
    $page = get_page_by_path($slug);
    $result = false;
    if(isset($page)){
        foreach ((array)$post->ancestors as $ancestor) {
            if($ancestor == $page->ID){ 
                $result = true; 
            }
        }
    }
    return $result;
}

この関数をfunctions.phpに追加することで、特定のページとその下層ページを簡単に判別することができるようになります。

以上が、WordPressで特定のページや投稿タイプを判別するためのコードの紹介です。これらの条件分岐を使うことで、より柔軟にサイトをカスタマイズすることができます。

制作のご相談・ご依頼はこちらから!
To Top