我花了一些时间进行搜索,但是对于将新的$args
传递给导航小部件而言,我还没有发现任何具体的东西。我确实偶然发现了this post。但是,我认为答案对我想要达到的目标有些过高。
要总结链接的帖子,它基本上会继续说明如何完成我需要的工作,但前提是必须创建一个全新的小部件。
具体来说,我正在寻找合并或覆盖以下内容的方法
$args
专用于放置在Wordpress侧栏中的菜单小部件;
wp_nav_menu( array $args = array(
'menu' => "header-quicklinks",
'menu_id' => "quicklinks",
'theme_location' => "sidebar-header"
) );
如果可能的话,我想传递小部件的ID,在我的情况下为nav_menu-6
;到该功能并仅将$args
仅应用于该菜单,这样我可以在需要时修改代码以定位其他菜单。
目前正在修改以下内容;
function widget_nav_args($args){
$menu = $args['menu'];
if($menu->term_id === "menu-quick-links") { // < Error: non-object.
return array_merge( $args, array(
'menu_class' => 'TESTING', // for testing.
// More settings here ...
) );
}
return $args;
}
add_filter('widget_nav_menu_args', 'widget_nav_args');
答案 0 :(得分:1)
您快到了。 widget_nav_menu_args
过滤器接受的参数不仅仅是导航的$args
。您想查看小部件参数,它是第三个参数。看起来像这样:
function widget_nav_args( $nav_menu_args, $nav_menu, $args, $instance){ // <- notice extra params..
if( $args['id'] === 'sidebarheader' ) { // < This is where we check if it's the right widget
return array_merge( $nav_menu_args, array(
'menu_class' => 'TESTING', // for testing.
// More settings here ...
) );
}
return $nav_menu_args;
}
add_filter('widget_nav_menu_args', 'widget_nav_args', 10, 4);
注意,我必须明确说明要传递给过滤器函数的参数个数。请务必通读WP Codex here中的文档。
希望有帮助!
答案 1 :(得分:-2)
add_filter('widget_nav_menu_args', 'my_wp_nav_menu_args');
function my_wp_nav_menu_args($args) {
if (is_page(2) //Only target page 2
&& $args['theme_location'] === 'primary') { // Check and only target the primary menu
$args['menu'] = 'Menu for Profile';
}
return $args;
}
示例参数如下。
$arguments = array(
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'item_spacing' => 'preserve',
'depth' => 0,
'walker' => '',
'theme_location' => ''
);