Php 是否可以在Wordpress(侧边栏)新的$args中传递导航小部件?
我花了一些时间进行搜索,但在向导航小部件传递新信息方面,我还没有找到任何具体的方法。我确实偶然发现了。然而,我认为答案对于我想要实现的目标来说有点过分了 总结一下这篇链接文章,它基本上会继续展示如何实现我所需要的,但前提是创建了一个全新的小部件Php 是否可以在Wordpress(侧边栏)新的$args中传递导航小部件?,php,wordpress,navigation,widget,args,Php,Wordpress,Navigation,Widget,Args,我花了一些时间进行搜索,但在向导航小部件传递新信息方面,我还没有找到任何具体的方法。我确实偶然发现了。然而,我认为答案对于我想要实现的目标来说有点过分了 总结一下这篇链接文章,它基本上会继续展示如何实现我所需要的,但前提是创建了一个全新的小部件 具体来说,我希望合并或覆盖以下内容 $args专门用于放置在Wordpress边栏中的菜单小部件 如果可能的话,我想传递小部件的ID,在我的例子中是nav_menu-6;将$args应用于该功能,并使其仅适用于该菜单,这样,如果我有要求,我可以修改代码
具体来说,我希望合并或覆盖以下内容
$args
专门用于放置在Wordpress边栏中的菜单小部件
如果可能的话,我想传递小部件的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');
function小部件导航参数($args){
$menu=$args['menu'];
如果($menu->term_id==“菜单快速链接”){/<错误:非对象。
返回数组\u合并($args,数组(
'menu_class'=>'TESTING',//用于测试。
//更多设置在这里。。。
) );
}
返回$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' => ''
);
$arguments=array(
'菜单'=>'',
“容器”=>“div”,
“容器类”=>“”,
“容器id=>”,
“菜单类”=>“菜单”,
'菜单id'=>'',
“echo”=>正确,
“回退\u cb'=>“wp\u页面\u菜单”,
'在'=>''之前,
'在'=>''之后,
'链接在'=>''之前,
'链接在'=>''之后,
“项目包装”=>”%3$s
”,
“项间距”=>“保留”,
“深度”=>0,
“沃克”=>“,
“主题位置”=>“
);
你就快到了。widget\u nav\u menu\u args
过滤器接受的参数多于nav的$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);
function widget\u-nav\u-args($nav\u-menu-args,$nav\u-menu,$args,$instance){//嘿,伙计,谢谢你的努力,但我没有成功,它似乎根本没有针对任何东西,知道为什么吗?@beanie抱歉,我的错,我返回的是$args
而不是$nav\u-menu-args
。我已经编辑了代码示例。(基本上我在WP codex中使用了var名称,这与您的示例中的var名称不同)@beanie$args
是当前小部件的参数,请参见其中包含其id
。您需要检查的是nav_menu-6
是否是您要查找的id。只需弹出print\r($args)
在该函数中,看看它是否有帮助。@beanie我已经在WP网站上测试过它,我能够看到它将类“TESTING”添加到菜单中。你没有看到吗?让我们看看。
$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' => ''
);
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);