二级菜单和已登录用户

时间:2020-05-31 作者:T. Thomas

我使用下面的代码根据用户登录状态在基于店面的子主题中显示两个不同的菜单。但当我有一个二级菜单(通过搜索栏链接)时,它被替换为主菜单。在检查登录用户时,是否有办法区分两者?

下面的代码在我的函数中。php文件。

//Custom Nav Menu
function custom_wp_nav_menu_args( $args = \'\' ) {
    if( is_user_logged_in() ) {
        $args[\'menu\'] = \'logged-in\';
    }else { 
        $args[\'menu\'] = \'logged-out\';
    } 
    return $args;
}
add_filter( \'wp_nav_menu_args\', \'custom_wp_nav_menu_args\' );
该主题是默认的店面主题,应在搜索框左侧显示辅助菜单。正如您在这里看到的,它显示(或)登录或注销菜单。

有关详细信息,请参阅所选答案。我的工作代码。。。

//Custom Nav Menu
function custom_wp_nav_menu_args($args) {
    if ( isset($args[\'theme_location\']) && \'primary\' === $args[\'theme_location\'] ) {
            // do something
        if( is_user_logged_in() ) {
            $args[\'menu\'] = \'logged-in\';
        }else { 
            $args[\'menu\'] = \'logged-out\';
        }
    } 
    return $args;
}
add_filter( \'wp_nav_menu_args\', \'custom_wp_nav_menu_args\' );

1 个回复
最合适的回答,由SO网友:Antti Koskinen 整理而成

wp_nav_menu_args 内部是否有过滤器wp_nav_menu, 用于在站点上显示导航菜单。这个$args 传递给筛选器的参数是包含wp_nav_menu 参数。默认情况下,它们如下所示:,

$defaults = 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\'  => \'\',
);
您也可以在wp_nav_menu 代码引用及其源代码中。(这些与由提供的主题参数合并)wp_parse_args 在传递给wp_nav_menu_args 过滤器。)

这意味着您可以使用该参数检查过滤器当前正在处理的位置。

add_filter(\'wp_nav_menu_args\', \'my_wp_nav_menu_args_filter\');
function my_wp_nav_menu_args_filter($args) {
  if ( isset($args[\'theme_location\']) && \'my-theme-location\' === $args[\'theme_location\'] ) {
    // do something
  }
  return $args;
}
(对于店面,位置slug为secondary, 您可以在source code.)

相关推荐

Custom items for Menus

编辑菜单时,我发现可以添加5种类型的项目:自定义链接页面帖子类别标签是否可以添加自定义的?比如说,我想添加一个图像,或者一个搜索栏,或者其他什么。我是否可以添加新的菜单项类型,以呈现我为它们选择的代码?