• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

株式会社ハイファイブクリエイト

東京都を拠点にWebサイト制作やシステム構築、WordPress保守管理やウェブコンサルティングを提供。

  • SERVICE
  • ABOUT
  • WORKS
  • BLOG
  • NEWS
  • CONTACT
ホーム / ブログ / TIPS / body_classにページスラッグ名を含ませたりオリジナルのclassを追加

body_classにページスラッグ名を含ませたりオリジナルのclassを追加

池田祐太郎 | 2018年1月6日 公開


WordPressは共通のヘッダーをテンプレートファイルとして利用することにより、全ページのヘッダーを共通で管理できるメリットがあります。

しかし全ページ共通がゆえに、各ページに細かい設定をする場合、「固定ページなら◯◯を表示」「カテゴリーページなら◯◯を表示」などの条件分岐を行い表示を分ける必要があります。

ページの構築方法の一つとして、各ページの独自のレイアウトを実現するためにbodyタグに独自のidやclassを付与することで、ページ全体のデザインを制御できます。
WordPressのテンプレートタグにbody_classというものがあり、bodyタグに独自のclassを追加することができます。

例えば、トップページの場合はトップページを表す「home」、ログイン中は「logged-in」といったように、状況に応じてクラスを追加してくれます。

//通常の場合のトップページbodyタグ
<body>

//body_classを使った場合のトップページbodyタグ
<body class="home blog logged-in admin-bar no-customize-support hfeed has-header-image has-sidebar colors-light">

固定ページや投稿等のページの場合でも独自のclassを吐き出してくれるのですが、id名がベースだったりしてイマイチ使い勝手がよくありません。

そこで、slug名に使われている名称をbody_classに含めることで、例えばサービス概要ページ(スラッグ名”service”)はbodyタグにserviceを含ませられ、わざわざ条件分岐を作らなくてもCSSでのデザインやレイアウト制御が簡単になります。

前置きが長くなりましたが、bodyタグのclass名に反映するためのカスタマイズをご紹介します。

目次

  • 1 サンプルコード
  • 2 固定ページはスラッグ名、投稿とカテゴリー一覧ページはカテゴリー名を含ませる
    • 2.1 モバイル用の専用classを吐き出す
    • 2.2 自分で独自に設定したいクラス名を含めることも可能
    • 2.3 body_classタグを含めることをお忘れなく!

サンプルコード

以下をfunctions.phpの任意の場所へ書きます。バックアップは忘れずにとっておいてください。

/*
* body_classにページスラッグ名を含ませたりオリジナルのclassを追加&タブレットとスマホの場合のクラスも追加
*/
function pagename_class($classes = '') {
    if (is_page()) { //slugを追加
      $page = get_page(get_the_ID());
      $classes[] = $page->post_name;
    } elseif (is_category() || is_single()) { //slugを追加
      $category = get_the_category();
      $classes[] = $category[0]->slug;
    }
    if (wp_is_mobile()) {
      $classes[] .= 'mobile'; //mobileの場合classを追加
    }
    //$classes[] .= '任意のクラス名'; //その他必要なクラス名があれば追加

    return $classes;
}
add_filter('body_class','pagename_class');

固定ページはスラッグ名、投稿とカテゴリー一覧ページはカテゴリー名を含ませる

固定ページの場合は先ほどの例のように、スラッグ名をbodyタグのclass名に含ませられます。
万が一日本語スラッグを採用している場合は文字化けするためご注意ください。(class名として利用しないため運用には問題ないと思いますが)


スラッグ名が「sample-page」の固定ページ例です。上は今回のカスタマイズコードを入れた場合にスラッグ名が入っているのがわかると思います。
下は普通のbody_class。スラッグ名は入っていません。

投稿、カテゴリー一覧の場合はその投稿のカテゴリースラッグを表示しますので、カテゴリー毎の制御が可能になります。

モバイル用の専用classを吐き出す


モバイル端末で閲覧しているときに、”mobile”というclass名を吐き出すようにしています。
これにより、モバイル端末の場合のみ適用したいCSSを簡単に適用することができます。
モバイル端末にはスマホ、タブレットが含まれます。

自分で独自に設定したいクラス名を含めることも可能

例ではコメントアウトしていますが、含めたい任意のクラス名をbody_classテンプレートタグに含めることが可能です。
サンプルコードの下記の部分のコメントアウトを取り、「任意のクラス名」というところを書き換えて下さい。

//$classes[] .= '任意のクラス名'; //その他必要なクラス名があれば追加


例として、「something_class」というクラス名を追加してみました。無事に追加されているのがわかります。

body_classタグを含めることをお忘れなく!

当たり前ですが、テンプレートファイル側はbody_classテンプレートタグが含まれている必要があります。
ちなみにWordPress4.9.1時点でのデフォルトテーマのtwentyseventeenには最初から設定されています。

<body <?php body_class(); ?>>

オリジナルテーマ開発の場合やクライアントワークで各ページ毎の背景画像が変わる・・・なんてときに使いやすいかと思います。
ご参考になれば幸いです。

メールコンサルティング
WordPress保守管理サービス

Filed Under: TIPS 関連タグ:WordPressカスタマイズ

池田祐太郎

WordPress の構築・保守を10年以上にわたって手掛けており、主に小〜中規模のコーポレートサイト・ECサイト・ブランドサイト等の企画・開発・保守・コンサルティングなどを行ってきました。2012年にハイファイブクリエイトを創業し、現在は WordPress の保守やコンサルティング、ディレクションや開発業務などを担当しています。 プロフィール詳細

この記事と関連する記事

WordPressの固定ページでタグやカテゴリーを使いたいときはカスタム投稿タイプを検討する
2022年1月27日
タグ: WordPressカスタマイズ
カテゴリー: WordPress
フレームワークを使ってWordPressサイトをリニューアルしたら表示速度が速くなった話
2018年6月4日
タグ: Webサイト高速化, WordPressカスタマイズ
カテゴリー: WordPress, ホームページ制作, モバイル
WP固定ページや投稿内でphpファイルを読み込むショートコード
2018年4月1日
タグ: WordPressカスタマイズ
カテゴリー: TIPS

人気記事

  1. git pull してもエラーが出てファイルが反映されないときの対処法
  2. 同一サーバー上に構築するWordPressのテスト環境の作り方
  3. WordPressの固定ページでタグやカテゴリーを使いたいときはカスタム投稿タイプを検討する
  4. サイト制作の要件定義書に普段書いている内容(ダウンロード可)
  5. [便利]困難な判断を10秒で AI が客観的に導き出すツールを試してみた
  6. WordPress において PHP 8.1 に更新していいかどうか検証

最初のサイドバー

WordPress保守管理サポート

Search

最近の投稿

  • 外部のプロフェッショナルによる WordPress サイトの保守・運用:安心と安全性を手軽に手に入れる方法
  • [便利]困難な判断を10秒で AI が客観的に導き出すツールを試してみた
  • WordPress のクロスサイト・スクリプティング被害にあった事例を共有します
  • メール作業の生産性を向上させる最低限覚えておくべき Gmail のショートカットキー
  • タブ固定とタブ一発アクセスのショートカットキーの組み合わせでブラウザ作業の生産性を向上

カテゴリー

  • CSS初心者
  • HTML初心者
  • TIPS
  • WooCommerce
  • WordPress
  • エステサロン
  • お知らせ
  • キュレーション
  • サイトマップ
  • システム会社
  • デベロッパーツール入門
  • ブログ
  • ホームページ制作
  • ホームページ制作無料講座
  • メール
  • モバイル
  • 仕事のこと
  • 制作実績
  • 整体院
  • 美容院
  • 雑感

タグ

Android BtoC CMS css elementor git google workspace Gutenberg HTML iPhone jQuery Mac MAMP php SEO SNS ssh SSL Sublime Text Webサイト高速化 Windows WordPress WordPressカスタマイズ WordPressテーマ WordPress構築調査 WPRocket アクセス解析 アプリ クラウド クラウドソーシング サイト引っ越し サブスクリプション サーバー ショートカットキー スマホサイト スマートフォン ツール ブログ プラグイン マーケティング リニューアル 保守管理 改ざん 最適化 集客するサイト構築

アーカイブ

CONTACT

お問い合わせはこちら

Footer

  • PRIVACY POLICY
  • 情報セキュリティ基本方針
  • 特定商取引法に基づく表示
  • 転載/引用

© 2023 high five create All rights reserved.