WordPressを使っていると、特定のページや投稿タイプに対して条件分岐を行いたいことがよくあります。ここでは、様々なシナリオでの条件分岐のコードを紹介します。
トップページの判別
まず、現在表示されているページがトップページ(ホームページ)かどうかを判別する方法です。
<?php if (is_front_page()): ?>
<!-- トップページの場合の処理 -->
<?php endif; ?>
固定ページの判別
固定ページかどうかを判別する方法です。
<?php if(is_page()): ?>
<!-- 固定ページの場合の処理 -->
<?php endif; ?>
特定の固定ページの判別
特定の固定ページ(ここでは「menu」)を判別する方法です。
<?php if(is_page('menu')): ?>
<!-- 固定ページ「menu」の場合の処理 -->
<?php endif; ?>
投稿ページの判別
投稿ページかどうかを判別する方法です。
<?php if (is_single()): ?>
<!-- 投稿ページの場合の処理 -->
<?php endif; ?>
特定の投稿の判別
特定の投稿(ここでは「123」)を判別する方法です。
<?php if (is_single(123)): ?>
<!-- 投稿IDが「123」の場合の処理 -->
<?php endif; ?>
特定の投稿タイプの判別
特定の投稿タイプ(ここでは「topics」)を判別する方法です。
<?php if(get_post_type() == 'topics'): ?>
<!-- 投稿タイプが「topics」の場合の処理 -->
<?php endif; ?>
特定のカテゴリーページの判別
特定のカテゴリーアーカイブページ(ここでは「news」)を判別する方法です。
<?php if (is_category('news')): ?>
<!-- カテゴリー「news」のアーカイブページの場合の処理 -->
<?php endif; ?>
特定のタグページの判別
特定のタグアーカイブページ(ここでは「featured」)を判別する方法です。
<?php if (is_tag('featured')): ?>
<!-- タグ「featured」のアーカイブページの場合の処理 -->
<?php endif; ?>
特定のカスタム投稿タイプのアーカイブページの判別
特定のカスタム投稿タイプ(ここでは「column」)のアーカイブページを判別する方法です。
<?php if( is_post_type_archive( 'column' ) ) :?>
<!-- カスタム投稿タイプ「column」のアーカイブページの場合の処理 -->
<?php endif; ?>
カスタム投稿のカテゴリーページの判別
特定のタクソノミーとターム(ここではタクソノミー「column_category」、ターム「food」)を判別する方法です。
<?php if( is_tax('column_category','food') ):?>
<!-- タクソノミーが「column_category」、タームが「food」の場合の処理 -->
<?php endif; ?>
特定の固定ページとその子ページの判別
特定の固定ページとその子ページを判別する方法です。まず下記の関数をテーマの functions.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;
}
次に、ページテンプレートやテーマのテンプレートファイルで、この関数を使って条件分岐を行います。(ここでは「recruit」)
<?php if(is_page('recruit') || page_is_ancestor_of('recruit')): ?>
<!-- 固定ページ「recruit」またはその子ページの場合の処理 -->
<?php endif; ?>
サーチページの判別
検索結果ページであるかどうかを判別する方法です。
<?php if (is_search()): ?>
<!-- 検索結果ページの場合の処理 -->
<?php endif; ?>
404エラーページの判別
404エラーページであるかどうかを判別する方法です。
<?php if (is_404()): ?>
<!-- 404エラーページの場合の処理 -->
<?php endif; ?>
サイトのユーザーがログインしているかの判別
ユーザーがログインしているかどうかを判別する方法です。
<?php if (is_user_logged_in()): ?>
<!-- ユーザーがログインしている場合の処理 -->
<?php endif; ?>
固定ページのテンプレート判別
固定ページの特定テンプレートが使用されているかどうかを判別する方法です。
<?php if (is_page_template('page-template-custom.php')): ?>
<!-- テンプレート「page-template-custom.php」が使用されている場合の処理 -->
<?php endif; ?>
投稿が公開状態かどうかの判別
投稿が公開状態であるかどうかを判別する方法です。
<?php if (get_post_status() == 'publish'): ?>
<!-- 投稿が公開状態の場合の処理 -->
<?php endif; ?>
特定のカスタムフィールドの判別
特定のカスタムフィールドが設定されているかどうかを判別する方法です。
<?php if (get_post_meta(get_the_ID(), 'custom_field', true)): ?>
<!-- カスタムフィールド「custom_field」が設定されている場合の処理 -->
<?php endif; ?>
モバイルデバイスの判別
ユーザーがモバイルデバイスからアクセスしているかどうかを判別する方法です。下記のコードはタブレットもスマホとして処理されます。
<?php if (wp_is_mobile()): ?>
<!-- モバイルデバイスからアクセスしている場合の処理 -->
<?php endif; ?>
以上が、WordPressで特定のページや投稿タイプを判別するためのコードの紹介です。これらの条件分岐を使うことで、様々なシナリオに対応でき、より柔軟にサイトをカスタマイズすることができます。