概要
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
フィルタは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
クラスを追加します。