如何向访客显示登录弹出窗口并重定向已登录用户?

时间:2021-01-09 作者:Ricardo Arnedo

我有一个菜单项;签出(&Q;);。单击后,链接到登录弹出窗口,提示用户注册/登录/继续作为来宾,然后从那里结账。如果用户已经登录,我如何使相同的按钮重定向到签出页面?使用ELementor和Astra themeThanks!

2 个回复
最合适的回答,由SO网友:Celso Bessa 整理而成

以更“的方式”;“香草”;设置(即没有页面生成器,不使用模式或弹出窗口)有两种基本方法:

a)生成不同的菜单b)从目标页面重定向,我不会生成不同的菜单,因为根据我的经验,根据服务器和WordPress的设置,菜单看起来更凌乱,性能更低。我会使用选项B,不会在弹出窗口/模式中使用登录,使用的函数与您共享的代码相同,但有一些调整:

add_action( \'template_redirect\', \'wpse381189_dashboard_redirect\' );
function wpse381189_dashboard_redirect() {
    // make sure i) we are not in admin side ii) we are not doing ajax iii) user is logged in.
    if( !is_admin() && !defined( \'DOING_AJAX\' )&& is_user_logged_in() ) {
        nocache_headers();
        wp_safe_redirect( home_url( \'/dashboard/\' ) );
        exit();
    }
}
如果仍要使用弹出窗口/模式,则需要使用一个函数返回数据,告诉前端用户状态(即登录或注销),并让Javascript处理重定向。但这可能有点困难,因为您使用的是非核心页面生成器Elementoroff-topic in this community 根据您使用的模板,使大多数WordPress核心挂钩不可用。在这种情况下,建议您看看Using Ajax articles 在WordPress官方文档上,然后在页面生成器文档中找到如何处理Ajax并向其添加您自己的脚本。

SO网友:Ricardo Arnedo

可能是这样的,但我不知道如何适应我的情况:

添加\\u操作(“template\\u redirect”、“dashboard\\u redirect”);函数dashboard\\u redirect(){if(is\\u page(home\\u url(\'/min konto/\'))&;!is\\u user\\u logged\\u in()){wp\\u redirect(home\\u url(\'/dashboard/\');exit();}}

相关推荐

如果页面为wp-login.php且$_GET[‘Level’]=X,则重定向已登录用户

我读过很多关于在go-to/wp登录时重定向登录用户的帖子。php。然而,我的情况有点不同。例如,我希望我的用户单击一个链接,将他们带到“/wp login.php?action=register&;level=7”。如果用户已登录,则应将其重定向到“会员帐户/会员资格签出/?级别=7”。我尝试了以下代码。function custom_level_login_redirect() { $isPageLogin = is_page(\'login\'); $i