如何在登录后将用户重定向到特定页面?

时间:2021-07-02 作者:Seblito

我有一个页面,在三个不同的选项卡中包含混合内容。第一个选项卡是对所有内容的开放访问,但最后两个选项卡的内容仅针对登录的用户,通过发送用户登录:

<p>You need to be logged in in order to view this content. Would you like to <a href="<?php echo esc_url(wp_login_url()); ?>"><?php _e(\'log in\') ?></a> now?</p>

然后我在函数中处理这个问题。通过使用login_form 操作,其中我使用redirect_to (参见代码块)。

How do I limit this action to only work from one specific page? 我尝试过使用下面的代码,但它只起作用without 这个if (is_page()) 部分我需要它的工作只有当用户点击这个页面的链接。

function my_login_redirect()
{
    global $redirect_to;
  // Check if the page is "about us"
    if (is_page(\'about-us\')) {
        if (!isset($_GET[\'redirect_to\'])) {
            $redirect_to = site_url(\'/about-us\');
        } else {
            $redirect_to = $_GET[\'redirect_to\'];
        }
    }
}

add_action(\'login_form\', \'my_login_redirect\');
非常感谢您的帮助!非常感谢。

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

在登录链接中调用WordPress函数wp_login_url() 生成登录URL。Peattie先生在评论中提出的问题涉及记录在案的参数redirect 此功能支持。如有疑问,请始终检查文档:https://developer.wordpress.org/reference/functions/wp_login_url/

实际上有两个参数wp_login_url() 但就你的问题而言,第一个问题是你需要提供的全部内容。

利用redirect 参数将告诉WordPress将成功完成登录的用户发送到哪里。假设登录表单的链接来自您希望返回的关于我们页面的模板,则当前页面permalink可以用作如下参数的值:

wp_login_url( get_permalink() )
查看该命令的输出,您将在WordPress输出的登录URL上看到查询参数。

如果您在其他地方使用登录URL功能,并且需要“关于我们”页面作为重定向目标,只需将其作为字符串输入,如下所示:

wp_login_url( \'/about-us\' ) )
为了获得更好的用户体验,请在显示登录链接之前检查当前用户的登录状态。将其与代码的其余部分放在一起:

<?php if ( ! is_user_logged_in() ) : ?>
    <p>You need to be logged in in order to view this content. Would you like to <a href="<?php echo esc_url( wp_login_url( \'/about-us\' ) ); ?>"><?php _e(\'log in\') ?></a> now?</p>
<?php endif; ?>

相关推荐

How to redirect Webp files?

为了提高性能,我将所有图像都用作webp文件,但我已经停止使用并从FTP中删除了它们(仅.webp文件)。现在有404个错误的问题。我想重定向所有。将webp文件转换为jpg、png、gif等。例如:https://www.example.com/wp-content/uploads/2019/04/file.jpg.webp https://www.example.com/wp-content/uploads/2019/04/file.jpeg.webp https://www.exam