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」ページを親に持つ子ページを表示中
}
?>