如何将自定义li项添加到wordPress菜单

时间:2019-02-26 作者:Udara

我已尝试添加自定义li 到我的wordpress标题菜单,使用functions.php. 这是我的密码function 文件

function register_header_menu() {
   register_nav_menu(\'header-menu\',__( \'Header Menu\' ));
}
add_action( \'init\', \'register_header_menu\' );
将新元素添加到标题菜单

function add_new_item($items, $args) {
   if( $args->theme_location == \'header-menu\' ){
    $items .= \'<li> <a>Show whatever</a></li>\';
}
    return $items;
}
add_filter(\'wp_nav_menu_items\', \'add_new_item\');
我正在使用以下代码将菜单添加到header.php

wp_nav_menu( array(
  \'theme_location\' => \'header-menu\',
  \'container\'    => \'ul\',
  \'menu_class\' => \'menu\',
) ); ?>
菜单在标题上可见,但我的新项目在菜单中不可见。我怎样才能修复它?

1 个回复
SO网友:Krzysiek Dróżdż

的默认用法add_filter 如下所示:

add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
如您所见,默认优先级为10,默认情况下只传递一个参数。

在代码中,您需要过滤器获取2个参数,因为wp_nav_menu_items 取2个参数($items$args) 你需要在你的过滤器中同时使用它们。因此,在添加过滤器时,必须将2作为参数数传递:

function add_new_item_to_menu( $items, $args ) {
    if ( \'header-menu\' == $args->theme_location ) {
        $items .= \'<li><a>Show whatever</a></li>\';
    }
    return $items;
}
add_filter( \'wp_nav_menu_items\', \'add_new_item_to_menu\', 10, 2 );

相关推荐

使用Apply_Filters()的要点

当我试图开发一个插件时,我试图看到其他插件也能完成我的插件将要实现的功能,然后我看到开发人员在大多数功能中使用该功能apply_filters() 我不明白为什么。下面是一个示例:public static function myFunction() { return apply_filters( \'du/class/method\' array( \'index\' => \'value\', \'index\' =&g