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);