我正在试图弄清楚如何将菜单类(admin中的可选字段)添加到body_class
,因为我想在页面的其他元素上使用菜单项的颜色:
/** Add nav menu css class to body class */
function add_nav_menu_css( $classes ) {
$classes[] = ‘optional-menu-class’;
return $classes;
}
add_filter( ‘body_class’, ‘add_nav_menu_css’ );
应该替换'optional-menu-class'?
答案 0 :(得分:1)
我能找到的唯一方法是使用wp_get_nav_menu_items($menuID)
我使用id
7
对其进行了测试
$items = wp_get_nav_menu_items( 7 );
foreach ($items as $i) {
echo $i->classes[0];
}
输出我在外观菜单页面上输入的sample-page-class
。
所有菜单类都作为类存储在函数wp_get_nav_menu_items
中,因此您可以使用foreach
将其循环出来,就像我上面所做的那样。
然后将该数据传输到body_class
。
因此,functions.php中的body_class
过滤器应该
add_filter('body_class','add_nav_menu_css');
function add_nav_menu_css($classes) {
$items = wp_get_nav_menu_items( 7 ); // change to id of your menu
foreach ($items as $i) {
$menuClasses .= $i->classes[0].' ';
}
$classes[] = $menuClasses;
return $classes;
}
输入到functions.php页面
add_filter('body_class','my_class_names');
function my_class_names($classes)
{
$items = wp_get_nav_menu_items( 7 ); //change to suit your menu id
foreach ($items as $item):
$menuClasses = $item->classes;
$objectId = $item->object_id.' ';
if ( is_page($item->object_id) ):
$current[] = $menuClasses;
endif;
endforeach;
$classes[] = $current[0][0];
return $classes;
}
文档为here
答案 1 :(得分:0)
如果要将自定义类添加到body标签,只需使用body类
<body <?php body_class('class-name'); ?>>
其中'class-name'是您的自定义类, 如果您希望根据或页面/帖子进行更改,只需将其添加到header.php
即可<?php
if(is_page('your-page-name')){// or post
$body_class = 'your-custom-page-class';
}
?>
<body <?php body_class($class_name); ?>>
您也可以根据类别名称更改课程。
<?php
if( !is_front_page() && is_category() || is_single() ){
// category single name
$cat_name = single_cat_title('',false);
// category id from category name
$cat_id = get_category_id($cat_name);
$body_class = $cat_name;
}
?>
<body <?php body_class($body_class); ?>>
希望这对你有用。
中号
ps:刚看到你的更新 看看这里, https://wordpress.stackexchange.com/questions/20110/add-custom-class-to-wp-nav-menu-using-filter-hook-nav-menu-css-class