我已尝试添加自定义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\',
) ); ?>
菜单在标题上可见,但我的新项目在菜单中不可见。我怎样才能修复它?
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 );