概要
get_body_class
フィルタは、body
タグのclass属性値を取得するために使用されるフィルタです。このフィルタを使用すると、テーマやプラグインが出力されるCSSクラスを変更または追加できるため、デザインやスタイリングの柔軟性が増します。
主に以下のような機能を実装する際によく使われます:
- ページの種類に応じたクラスの追加
- カスタム投稿タイプに特有のクラス名の追加
- 特定の投稿やページでのスタイリング調整
- プラグインによる機能の有効無効に応じたクラスの適用
- ユーザーのロールに基づくスタイルの適用
- ブラウザやデバイスに依存するスタイルの適用
- スタイルガイドの実装
- アクセシビリティ向上のためのクラス追加
構文
apply_filters( 'get_body_class', array $classes, WP $wp );
パラメータ
$classes
: 既定のクラスの配列。$wp
:WP
オブジェクト。
戻り値
- 変更されたクラスの配列。
関連する関数
使用可能なバージョン
このフィルタは WordPress 2.8.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
add_filter( 'get_body_class', 'custom_body_class' );
function custom_body_class( $classes ) {
if ( is_single() ) {
$classes[] = 'single-post';
}
return $classes;
}
このサンプルコードは、個々の投稿ページでsingle-post
というクラスを追加します。
サンプルコード2
add_filter( 'get_body_class', 'add_custom_post_type_class' );
function add_custom_post_type_class( $classes ) {
if ( is_singular( 'custom_post_type' ) ) {
$classes[] = 'custom-post-type';
}
return $classes;
}
このコードは、特定のカスタム投稿タイプのページにcustom-post-type
というクラスを追加します。
サンプルコード3
add_filter( 'get_body_class', 'add_user_role_class' );
function add_user_role_class( $classes ) {
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$classes[] = 'role-' . esc_attr( $current_user->roles[0] );
}
return $classes;
}
このサンプルは、ログインしているユーザーのロールに基づいてクラスを追加します。
サンプルコード4
add_filter( 'get_body_class', 'custom_browser_class' );
function custom_browser_class( $classes ) {
$classes[] = 'browser-' . strtolower( $_SERVER['HTTP_USER_AGENT'] );
return $classes;
}
このコードは、ブラウザに依存するクラスを追加します。HTTP_USER_AGENTに基づいてクラス名が設定されます。
サンプルコード5
add_filter( 'get_body_class', 'add_mobile_class' );
function add_mobile_class( $classes ) {
if ( wp_is_mobile() ) {
$classes[] = 'mobile';
}
return $classes;
}
このサンプルは、モバイルデバイスからのアクセス時にmobile
というクラスを追加します。