1

我试图弄清楚如何将菜单类(管理员中的可选字段)添加到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’ );

什么应该取代“可选菜单类”?

4

2 回答 2

1

我能找到的唯一方法是使用wp_get_nav_menu_items($menuID)

我在下面用我的菜单测试了id7

$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.

进一步解释:

所以你body_class在functions.php中的过滤器应该像

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;
}

文档在这里

于 2013-03-27T16:14:39.133 回答
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 -班级

于 2013-03-27T16:02:11.957 回答