1

body_classページの他の要素でメニュー項目の色を使用したいので、メニュークラス(adminのオプションフィールド)をに追加する方法を理解しようとしています。

/** 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'を何に置き換える必要がありますか?

4

2 に答える 2

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

さらに説明:

したがって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); ?>>

うまくいけば、それはあなたのためにうまくいく。

M

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 に答える