[wordpress] BODYに追加のclass名を付与するフィルター

HTMLのbodyタグを下記のように記述

[php]
<body <?php body_class(); ?>>
[/php]

 

下記コードはfunctions.phpに追加

bodyに任意のclass名を追加する

(my_class_names)の部分は任意の名称
(class-name)に任意のクラス名

[php]
// Add specific CSS class by filter
add_filter(‘body_class’,’my_class_names’);
function my_class_names($classes) {
// add ‘class-name’ to the $classes array
$classes[] = ‘class-name’;
// return the $classes array
return $classes;
}
[/php]

bodyとpost classに(カテゴリー名)(ポストクラス名)をclass名として追加する

[php]
// add category nicenames in body and post class
function category_id_class($classes) {
global $post;
foreach((get_the_category($post->ID)) as $category)
$classes[] = $category->category_nicename;
return $classes;
}
add_filter(‘post_class’, ‘category_id_class’);
add_filter(‘body_class’, ‘category_id_class’);
[/php]

sidebar.phpファイルが表示されている場合にのみ、bodyにクラスを追加する

[php]
add_action(‘wp_head’, create_function("",’ob_start();’) );
add_action(‘get_sidebar’, ‘my_sidebar_class’);
add_action(‘wp_footer’, ‘my_sidebar_class_replace’);

function my_sidebar_class($name=”){
static $class="withsidebar";
if(!empty($name))$class.=" sidebar-{$name}";
my_sidebar_class_replace($class);
}

function my_sidebar_class_replace($c=”){
static $class=”;
if(!empty($c)) $class=$c;
else {
echo str_replace(‘<body class="’,'<body class="’.$class.’ ‘,ob_get_clean());
ob_start();
}
}
[/php]