記事一覧と記事詳細で同一のテンプレートを使っていたりすると、ページ出力の際にbodyに別のidやclassを付けたい事があります。bodyに対してページごとで異なるidとclassを付ける方法をまとめました。
条件分岐タグによって表示中のページを判断しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?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()
- アーカイブページやメインページに表示数より多い投稿があり、ページが複数に分かれる時。
条件分岐を使って表示を出し分けるには、下記のような書き方をします。
1 2 3 4 5 6 7 |
<?php if ( is_front_page() ): ?> // フロントページの時はここを表示 <?php elseif ( is_single() ): ?> // 投稿ページのときはここを表示 <?php else: ?> // フロントページ・投稿ページ以外の時はココを表示 <?php endif; ?> |
この記事は以下のサイトを参考にさせて頂きました。
WordPress:body_classに独自のクラスを追加する方法+代替で独自のIDやクラスのみをbodyに指定する方法 | NxWorld
WordPress:カスタマイズするなら覚えておきたい条件分岐について | NxWorld