菜单位置切换器-示例代码失败

时间:2017-07-14 作者:Debbie Kurth

对WordPress示例代码失败的原因感到沮丧。编写一个简单的插件,根据用户的登录状态和角色切换显示的菜单。我正在保存当前菜单,以防

相关代码区域如下:

add_filter( \'wp_nav_menu_args\', \'MenuSelector\' );

function MenuSelector( $args = \'\')
{ 
    $menu_name = \'primary\';
    $locations = get_nav_menu_locations();  
    $menu_id = $locations[ $menu_name ] ;   
    $menu = wp_get_nav_menu_object($menu_id);
    $PrimaryMenu =  $menu[\'name\'];

......
}
这与WordPress参考上建议的代码相同。https://codex.wordpress.org/Function_Reference/wp_get_nav_menu_object

即便如此,仍会出现以下错误:

注意:未定义索引:primary-in/home/dskurth/public\\u html/wp-content/plugins/MenuSelector/main。php第105行。

Line 105 is: $menu_id = $locations[ $menu_name ] ;

因此,基本上是说菜单名的定义,即:“primary”是一个未定义的变量。这甚至是在遵循返回的数组的WordPress定义之后:

$locations = get_nav_menu_locations();
为什么?

1 个回复
SO网友:Cesar Henrique Damascena

因此,文档中的代码假设您试图获取的菜单设置为primary 菜单如果您要获取的菜单不是设置为primary在外观->菜单中,将显示此错误。我建议你试着与他们合作nameslug 相反

结束

相关推荐

添加到数组并通过do_action/Apply_Filters传递它

作为练习,我正在使用PHPclass to add meta boxes 我在GitHub上找到了。我只是复制了代码,现在我正在玩它来理解它。其工作原理如下:包含该类的文件包含在init中。在该文件内部,但在类外部,有一个空数组$meta_boxes 已初始化之后,使用apply_filters. 我猜是apply_filters 使用而不是do_action 因为后者不返回任何内容——$meta_boxes = apply_filters( \'cmb_meta_boxes\', $meta_boxes