Walker_Nav_Menu无效

时间:2017-11-26 05:24:08

标签: wordpress

我的wp_nav_manu函数在这里:

   <?php 
      wp_nav_menu(
                 array(
                            'theme_location' =>'main_nav',

                            'walker' => new customize_primary_menu()
                        )
      ); ?>
步行者课程是:

<?php 
class customize_primary_menu extends Walker_Nav_Menu
{
    //echo 'sattarNaz'; exit;
    function start_lvl($output, $depth = 0, $arg = array() ){
        echo 'here';exit;
        $indent = str_repeat("\t", $depth);
        //print_r($output); exit;
       $output = "\n$indent<ul class= \"sattar-menu\">\n";

    } 
}

这里我把这段代码看作是测试类的sattar-menu。但是当我检查DOM时,没有发现这样的类!我一次又一次地重新检查我的代码。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

在要显示此菜单的模板中放置此代码。

 if ( has_nav_menu( 'main_nav' ) ) {

         $defaults = array(
            'theme_location'  => 'main_nav',
            //'menu'            => '',
             'container'       => 'ul',
             'container_class' => '',
             'container_id'    => '',
             'menu_class'      => '',
             'menu_id'         => '',
             'walker'          =>  new customize_primary_menu()
        );

        wp_nav_menu( $defaults );

    }

然后在你的功能中你可以尝试这个

public function start_lvl( &$output, $depth = 0, $args = array() ) {
    $indent = str_repeat("\t", $depth);
    $output .= "\n$indent<ul class=\"sub-menu dropdown-menu\">\n";
  }

您还必须创建 function start_el 来自定义菜单。 看看这个答案,它解释了如何在wordpress菜单中添加自定义HTML:https://stackoverflow.com/a/12251157/1627227

完成此操作后,您必须转到调用菜单(wp_nav_menu())的位置。在我链接的答案中,有对wp_nav_menu的完整函数调用。但是你必须添加这一行:'walker'=&gt;新的customize_primary_menu到arguments数组,以在该特定菜单上使用自定义walker对象。

希望你明白了;)