是否可以在 Wordpress(侧边栏)new $args 中传递导航小部件?
Is it possible to pass a nav widget in the Wordpress (Sidebar) new $args?
我花了一些时间搜索,但我还没有真正找到任何关于通过新 $args
to a navigation widget. I did stumble across this post 的具体内容。但是,我认为这个答案对于我想要实现的目标来说有点矫枉过正。
总结链接 post 它基本上继续展示了如何完成我需要的,但前提是创建了一个全新的小部件。
Specifically, I'm looking to either merge or overwrite the following
$args
exclusively for a menu widget placed within a Wordpress sidebar;
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');
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' => ''
);
你快到了。 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.
中的文档
希望对您有所帮助!
我花了一些时间搜索,但我还没有真正找到任何关于通过新 $args
to a navigation widget. I did stumble across this post 的具体内容。但是,我认为这个答案对于我想要实现的目标来说有点矫枉过正。
总结链接 post 它基本上继续展示了如何完成我需要的,但前提是创建了一个全新的小部件。
Specifically, I'm looking to either merge or overwrite the following
$args
exclusively for a menu widget placed within a Wordpress sidebar;
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');
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' => ''
);
你快到了。 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.
中的文档希望对您有所帮助!