根据是否登录更改导航栏

时间:2020-10-12 作者:Tim

我正在使用BuddyBoss主题(BB子主题处于活动状态),需要根据用户是登录还是注销来控制显示哪个菜单。已注销的用户可以访问少数URI,但大多数站点仅限成员使用。默认的Buddy Boss菜单可以登录,但我希望为注销的用户隐藏它,并将其替换为有限的菜单without 搜索或配置文件,因为我不希望他们访问其搜索功能(对于付费会员网站,注销用户的访问权限非常有限)。有人可以帮助PHP完成吗?它在Buddy Boss主题中的位置以及如何将其连接到我的两个菜单(Elementor Pro中的两个模板标题)

我对PHP还不熟悉,但在这个巨大的论坛的帮助下,我学习得很慢。抱歉,如果以前有人问过这个问题,我已经找到了几个类似的答案,但都不管用。

蒂姆。

1 个回复
SO网友:Tony Djukic

正如您在评论中提到的,如果最适合您的方式是根据用户是否登录显示不同的头文件,那么这是实现此目的的最佳方式:

if( is_user_logged_in() ) :
    /** This is the name of your second header file.
     * It assumes the \'header-\' and the \'.php\' portions.
     * So the following get_header would use this file \'header-loggedin.php\'. */
    get_header( \'loggedin\' );
else :
    /* This would use the default header for your child theme named \'header.php\'. */
    get_header();
endif;
现在,如果导航不同,那么我要做的就是在标题中创建两个不同的导航位置,并根据用户是否登录有条件地加载它们。然后,在WP的菜单管理区域中,您可以管理两个不同的菜单,只需将其中一个指定为“主登录”和“主未登录”或类似的内容。

最好的解决方案实际上只取决于您实际需要多少不同方面的标题。如果只是导航,那么我会选择条件菜单位置。如果不仅仅是导航,我会选择条件头加载。

下面是创建两个菜单位置的方法,将其添加到函数中。php:

register_nav_menus(
    array(
        /* Make sure you change the textdomain to match yor child themes. */ 
        \'header-loggedin\'       => esc_html__( \'Main Menu Logged In\', \'tetdomain\' ),
        \'header-loggedout\'      => esc_html__( \'Main Menu Logged Out\', \'textdomain\' )
    )
);
这将创建两个新的菜单位置,您可以在WP中为其指定菜单Appearances -> Menus screen.

下一步,如果选择单曲header.php 文件中,您将以下代码放置在导航应该显示的位置:

if( is_user_logged_in() ) :
    wp_nav_menu(
        array(
            \'theme_location\'    => \'header-loggedin\',
            \'menu_id\'           => \'header_loggedin\'
        )
    );
else :
    wp_nav_menu(
        array(
            \'theme_location\'    => \'header-loggedout\',
            \'menu_id\'           => \'header_loggedout\'
        )
    );
endif;
如您所见,它使用相同的is_user_logged_in() 检查,然后根据条件的结果简单地确定应该使用哪个“菜单位置”。

wp_nav_menu 还有很多可配置的选项,所以如果您想自定义容器等,请仔细考虑。

相关推荐

How to search pdf attachment?

我正在使用高级自定义字段创建自定义字段。我创建了一个名为upload pdf的自定义字段。我可以使用此字段附加pdf文件,字段类型为File.假设WordPress中有一个发布页面。出版物在页面上显示为PDF文件。这些PDF来自一个自定义字段。页面上有一个搜索选项,可以搜索PDF文件。在搜索栏中键入PDF文件名时,应显示结果。我不想为此使用任何插件。如果不使用任何插件,是否可以搜索这些pdf文件?