記事一覧と記事詳細で同一のテンプレートを使っていたりすると、ページ出力の際にbodyに別のidやclassを付けたい事があります。bodyに対してページごとで異なるidとclassを付ける方法をまとめました。
条件分岐タグによって表示中のページを判断しています。
<?php
//IDの設定
if ( is_front_page() ) {//フロントページが表示中
$body_id = '表示させたいID';
} else if ( is_single() ) {//個別投稿のページを表示中
$body_id = '表示させたいID';
} else if ( is_page('contact') ) {//個別の固定ページを表示中
$body_id = '表示させたいID';
} else if ( is_category() ) {//カテゴリーのアーカイブを表示中
$body_id = '表示させたいID';
} else if ( is_tag() ) {//投稿タグのアーカイブを表示中
$body_id = '表示させたいID';
} else if ( is_search() ) {//検索結果のページを表示中
$body_id = '表示させたいID';
}
if (isset($body_id)){
$body_id = ' id="'.$body_id.'"';
}else{
$body_id = NULL;
}
//classの設定
if ( is_front_page() ) {//フロントページが表示中
$body_class = '表示させたいclass';
} else if ( is_single() ) {//個別投稿のページを表示中
$body_class = '表示させたいclass';
} else if ( is_page('contact') ) {//個別の固定ページを表示中
$body_class = '表示させたいclass';
} else if ( is_category() ) {//カテゴリーのアーカイブを表示中
$body_class = '表示させたいclass';
} else if ( is_tag() ) {//投稿タグのアーカイブを表示中
$body_class = '表示させたいclass';
} else if ( is_search() ) {//検索結果のページを表示中
$body_class = '表示させたいclass';
}
if (isset($body_class)){
$body_class = ' class="'.$body_class.'"';
}else{
$body_class = NULL;
}
?>
<body<?php echo $body_id; ?><?php echo $body_class; ?>>
条件分岐タグ
条件分岐タグを使うと、「特定のページでのみ表示させる」といった一定の条件の時のみ行なう処理を簡単に設定できます。
ここでは良く使いそうなもののみまとめました。その他にも条件分岐タグには様々なものが用意されているので、詳しくはこちらのサイトを参照してください。
条件分岐タグ – WordPress Codex 日本語版
条件分岐タグ
- is_home()
- メインブログページが表示されている場合。メインブログページとは時系列のブログコンテンツを表示するページのこと。
- is_front_page()
- サイトのフロントページとして設定されている投稿・固定ページが表示されている場合。デフォルトだと投稿一覧。
- is_single()
- 個別の投稿ページが表示されている場合。()の中にパラメータ(投稿IDなど)を指定できる。
- is_sticky()
- 投稿編集ページで「この投稿を先頭に固定表示」にチェックがある投稿が表示されている場合。()の中に投稿IDなどを指定できる。
- is_sticky()
- 投稿編集ページで「この投稿を先頭に固定表示」にチェックがある投稿が表示されている場合。()の中にパラメータを指定できる。
- is_page()
- 固定ページが表示されている場合。()の中にパラメータを指定できる。
- is_category()
- カテゴリーページが表示されている場合。()の中にパラメータを指定できる。
- is_tag()
- タグのアーカイブページが表示されている場合。()の中にパラメータを指定できる。
- is_archive()
- 各アーカイブページが表示されている場合。
- is_search()
- 検索結果ページが表示されている場合。
- is_404()
- 404エラーページが表示されている場合。
- is_paged()
- アーカイブページやメインページに表示数より多い投稿があり、ページが複数に分かれる時。
条件分岐を使って表示を出し分けるには、下記のような書き方をします。
<?php if ( is_front_page() ): ?> // フロントページの時はここを表示 <?php elseif ( is_single() ): ?> // 投稿ページのときはここを表示 <?php else: ?> // フロントページ・投稿ページ以外の時はココを表示 <?php endif; ?>
この記事は以下のサイトを参考にさせて頂きました。
WordPress:body_classに独自のクラスを追加する方法+代替で独自のIDやクラスのみをbodyに指定する方法 | NxWorld
WordPress:カスタマイズするなら覚えておきたい条件分岐について | NxWorld