ワードプレスのbody_classフィルタの使用方法・解説

概要

body_classフィルタは、WordPressのテーマやプラグインの開発者が、<body>タグのclass属性を柔軟にカスタマイズできるようにするためのフィルタです。このフィルタを使用することで、条件に応じたクラスを追加することができ、CSSやJavaScriptで特定のスタイルや機能を実装する際に非常に便利です。

主に以下のような機能で使用されることが多いです:
1. ページタイプによるクラス追加(例:投稿ページ、固定ページなど)
2. カスタム投稿タイプ用のクラス追加
3. ユーザーのログイン状態に応じたクラス追加
4. 言語やロケールに基づいたクラス追加
5. 他のプラグインやテーマとの互換性のためのクラス追加
6. ユニークなIDやクラスによる特定のページのスタイリング
7. 管理画面でのカスタムクラスの追加
8. ショートコードやウィジェットの状態に基づいたクラス追加

構文

add_filter('body_class', 'my_custom_body_classes');

パラメータ

  • $classes: 既存のクラスの配列。フィルタを通じて追加や変更が可能。

戻り値

  • $classes: 変更されたクラスの配列。

関連する関数

body_class

使用可能なバージョン

body_classフィルタはWordPress 3.0.0以降で利用可能です。

含まれるコアファイルのパス

wp-includes/general-template.php

この関数のアクションでの使用可能性

アクション 使用可能性
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード1: カスタムクラスの追加

function my_custom_body_classes($classes) {
    if (is_single()) {
        $classes[] = 'single-post';
    }
    return $classes;
}
add_filter('body_class', 'my_custom_body_classes');

このサンプルコードは、単一の投稿ページにsingle-postクラスを追加します。

サンプルコード2: カスタム投稿タイプ用のクラス

function add_custom_post_type_class($classes) {
    if (is_singular('custom_post_type')) {
        $classes[] = 'custom-post-type';
    }
    return $classes;
}
add_filter('body_class', 'add_custom_post_type_class');

このサンプルコードは、特定のカスタム投稿タイプの投稿ページにcustom-post-typeクラスを追加します。

サンプルコード3: ユーザーの状態に基づくクラスの追加

function my_user_body_class($classes) {
    if (is_user_logged_in()) {
        $classes[] = 'logged-in';
    }
    return $classes;
}
add_filter('body_class', 'my_user_body_class');

このサンプルコードは、ユーザーがログインしている場合、logged-inクラスを追加します。

サンプルコード4: デバイスによるクラスの追加

function device_body_class($classes) {
    if (wp_is_mobile()) {
        $classes[] = 'mobile-device';
    }
    return $classes;
}
add_filter('body_class', 'device_body_class');

このサンプルコードは、モバイルデバイスからアクセスされている場合にmobile-deviceクラスを追加します。

サンプルコード5: カスタム条件の追加

function custom_condition_body_class($classes) {
    if (is_page_template('custom-template.php')) {
        $classes[] = 'custom-template-page';
    }
    return $classes;
}
add_filter('body_class', 'custom_condition_body_class');

このサンプルコードは、特定のページテンプレートが使用されている場合、custom-template-pageクラスを追加します。

この関数について質問する


上の計算式の答えを入力してください