【问题标题】:Wordpress change li class name without walker?Wordpress 在没有 walker 的情况下更改 li 类名?
【发布时间】:2017-10-16 04:14:00
【问题描述】:

wordpress 有什么方法可以在不使用 Walker 的情况下将“li”的类更改为wp_nav_menu()

'sub-menu' => 'dropdown',

我尝试了类似的方法,但没有成功:

<?php
$args = array('theme_location' => 'navigate',
                'container' => '',
                'container_class' => 'none',
                'menu_class' => 'nav middle navbar-nav',
                'menu_id' => 'none',
                'sub-menu' => 'dropdown',
    );

wp_nav_menu( $args );

?>

我需要一个简单的解决方案,只是不要使用 Walker。

【问题讨论】:

    标签: php wordpress css class


    【解决方案1】:

    您可以使用一个挂钩来更改菜单的 &lt;li&gt; 元素上的类:nav_menu_css_class

    您的问题并未准确说明您要对“下拉”类做什么。在我的示例中,我将“下拉”类添加到嵌套菜单项。

    /**
     * Modify the classes applied to menu items in the 'navigate' menu.
     *
     * @param array    $classes The CSS classes that are applied to the menu item's `<li>` element.
     * @param WP_Post  $item    The current menu item.
     * @param stdClass $args    An object of wp_nav_menu() arguments.
     * @param int      $depth   Depth of menu item. Used for padding.
     *
     * @return array 
     */
    function wpse_modify_nav_menu_item_classes( $classes, $item, $args, $depth ) {
    
        // Only apply changes to the correct menu, 'navigate',
        if ( 'navigate' !== $args->theme_location ) {
            return $classes;
        }
    
        // Modify menu li classes here...
        // Add 'dropdown' class to nested menu items.
        if ( 1 <= $depth ) {
            $classes[] = 'dropdown';
        } 
    
        // We're using a filter so don't forget to return.
        return $classes;
    }
    add_filter( 'nav_menu_css_class', 'wpse_modify_nav_menu_item_classes', 10, 4 ); 
    

    【讨论】:

      【解决方案2】:

      如果你想改变 li 里面的 ul 的类名,试试这个。 将此代码放入主题的functions.php文件

      function change_submenu_class_name($submenu) {

      $submenu = preg_replace('/class="sub-menu"/','/class="dropdown" /',$submenu);

      返回 $submenu;
      }
      add_filter('wp_nav_menu','change_submenu_class_name');

      或者,如果你想给 li 添加类,你可以从 admin 执行此操作,只需登录到 admin 并按照以下步骤操作: 转到外观-> 菜单并执行该过程 http://prntscr.com/f98s4v

      如果您有任何问题,请告诉我。

      【讨论】:

      • 是的,哈哈,我能做的最后一件事就是这个,这意味着function.php这是我能做的最后一件事。所以谢谢:)
      • 不客气 :) 如果您有任何问题,请告诉我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 2014-03-08
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多