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