[wordpress] wp_nav_menuサブメニューのクラス名を変更しますか?



5 Answers

クラスを置き換える:

echo str_replace('sub-menu', 'menu menu_sub', wp_nav_menu( array(
    'echo' => false,
    'theme_location' => 'sidebar-menu',
    'items_wrap' => '<ul class="menu menu_sidebar">%3$s</ul>' 
  ) )
);
Question

Wordpress自体で生成された子<ul class="sub-menu">カスタムクラス名に変更する方法はあり<ul class="sub-menu">か?

私はあなたが'menu_class' => 'newname'名前を削除または変更できる親ulを知っています

私は見つけることができません'submenu_class' => 'customname' ... 'submenu_class' => 'customname' :Dは私にとっては論理的ですが、明らかにそれは正しいものではありません。

何か案は?




あなたのcutomclassのcssクラス名をサブメニューに置き換えることをお勧めします。 検索と置換を使用してください:ie。 find:.customclassは.sub-menuに置き換えて、私のために働きます。




これはあなたに役立つかもしれません

メニュー項目の親クラスを追加する方法

function wpdocs_add_menu_parent_class( $items ) {
$parents = array();

// Collect menu items with parents.
foreach ( $items as $item ) {
    if ( $item->menu_item_parent && $item->menu_item_parent > 0 ) {
        $parents[] = $item->menu_item_parent;
    }
}

// Add class.
foreach ( $items as $item ) {
    if ( in_array( $item->ID, $parents ) ) {
        $item->classes[] = 'menu-parent-item';
    }
}
return $items;
 }
add_filter( 'wp_nav_menu_objects', 'wpdocs_add_menu_parent_class' );

/**
 * Add a parent CSS class for nav menu items.
 * @param array  $items The menu items, sorted by each menu item's menu order.
 * @return array (maybe) modified parent CSS class.
*/

メニュー項目への条件付きクラスの追加

function wpdocs_special_nav_class( $classes, $item ) {
    if ( is_single() && 'Blog' == $item->title ) {
    // Notice you can change the conditional from is_single() and $item->title
    $classes[] = "special-class";
}
return $classes;
}
add_filter( 'nav_menu_css_class' , 'wpdocs_special_nav_class' , 10, 2 );

参考までに: クリックしてください




リチャードが「深度」指標を追加したことを更新しました。 出力はレベル0、レベル1、レベル2などです。

class UL_Class_Walker extends Walker_Nav_Menu {
  function start_lvl(&$output, $depth) {
    $indent = str_repeat("\t", $depth);
    $output .= "\n$indent<ul class=\"level-".$depth."\">\n";
  }
}



デフォルトの "サブメニュー"クラス名を変更するには、簡単な方法があります。 あなたは単にそれをwordpressファイルで変更することができます。

場所:www / project_name / wp-includes / nav-menu-template.php。

このファイルを開き、行番号49でカスタムクラスのサブメニュークラスの名前を変更します。

または、サブメニューの横にカスタムクラスを追加することもできます。

完了しました。

それは私のために働いた。私はwordpress-4.4.1を使った。




それはいつものように、何かをサイトに書き込む前に長い時間を探してから、私がここに投稿してからちょうど1分後に解決策が見つかりました。

他の誰かがそれを見つけることができるように私はここでそれを共有すると思った。

//Add "parent" class to pages with subpages, change submenu class name, add depth class

    class Prio_Walker extends Walker_Nav_Menu {
    function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ){
        $GLOBALS['dd_children'] = ( isset($children_elements[$element->ID]) )? 1:0;
        $GLOBALS['dd_depth'] = (int) $depth;
        parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }

     function start_lvl(&$output, $depth) {
    $indent = str_repeat("\t", $depth);
    $output .= "\n$indent<ul class=\"children level-".$depth."\">\n";
  }
}

add_filter('nav_menu_css_class','add_parent_css',10,2);
function  add_parent_css($classes, $item){
     global  $dd_depth, $dd_children;
     $classes[] = 'depth'.$dd_depth;
     if($dd_children)
         $classes[] = 'parent';
    return $classes;
}

//Add class to parent pages to show they have subpages (only for automatic wp_nav_menu)

function add_parent_class( $css_class, $page, $depth, $args )
{
   if ( ! empty( $args['has_children'] ) )
       $css_class[] = 'parent';
   return $css_class;
}
add_filter( 'page_css_class', 'add_parent_class', 10, 4 );

これは私が解決策を見つけた場所です: Wordpressサポートフォーラムのソリューション




Related



Tags

wordpress wordpress