如果未登录 WordPress 如何重定向用户 » 页面重定向

已发表: 2022-01-02

如果未登录 WordPress 如何重定向 在上一篇文章中,我演示了如何检查用户是否已登录 WordPress。 您可能想要检查 WordPress 用户是否已登录的一个常见原因是根据 WordPress 用户的登录状态显示不同的页面。 如果您想在未登录 WordPress 的情况下重定向用户,您可以通过在您的 functions.php 文件中添加一个代码片段来实现此目的,正如您将在本快速教程中看到的那样。

为什么要在 WordPress 中重定向用户?

重定向用户是大多数 WordPress 网站的重要要求。 有时您可能希望将用户从一个页面重定向到另一个页面。 例如,您可以在结帐后重定向 WooCommerce 用户,或者您可以在注册或重定向登录网站后重定向用户。

如果未登录 WordPress 进行重定向是最常见的重定向之一。 虽然有一些插件可以帮助管理 WordPress 中的重定向,但添加一个小片段来解决这个问题是比依赖第三方插件更好的解决方案。

在本教程中,我将演示如何在您的主题或插件中添加一个片段,为未登录到您选择的页面的用户创建重定向。

未登录 WordPress 时重定向的步骤

要在未登录 WordPress 的情况下实现重定向,您应该按照以下步骤操作:

  1. 登录到您的 WordPress 站点并导航到主仪表板菜单上外观菜单下的主题编辑器。
  2. 打开活动 WordPress 主题的 functions.php文件。 您还可以使用 CPanel 或 FTP 访问活动主题 functions.php 文件。 它位于这条路上—— wp-root-installation/wp-content/themes/active-theme/functions.php
  3. 创建一个挂钩管理员初始化挂钩的操作挂钩 - admin_init ,例如add_action('init', 'redirect_if_not_logged_in') 这个钩子有一个回调函数,它将有逻辑来检查用户是否登录 WordPress,如果没有登录,他们将被重定向到我们希望的页面。
  4. 如上所述创建回调函数并相应地添加代码。
  5. 保存更改并转到前端测试未登录的用户是否被重定向到您在代码中添加的页面。

让我们演示如何在用户未登录 WordPress 的情况下添加重定向。 我将在 localhost 安装中使用默认的 WordPress 主题,但这适用于所有其他网站,无论主题和托管环境如何。

添加重定向的代码也可能采用另一个条件,例如在大多数情况下,当您想要限制非登录用户的内容时,您将检查两个条件:

  • 如果用户已登录
  • 如果用户在您拥有受限内容的页面上

当满足这些条件时,您应该使用 wp_redirect() 函数将用户重定向到您选择的页面。

WP功能:wp_redirect()

这是一个 WordPress 重定向功能,可用于主题和插件来重定向用户。 该函数的一般表达式如下:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

如您所见,该函数具有三个参数,如下所示:

范围描述
$location 这是您要重定向用户的 URL。 当您在用户未登录时使用此功能时,您需要提供我们将重定向用户的页面的 URL,如您将在代码示例中看到的那样
$status 这是一个可选参数,您可能不会经常看到它,但它是要使用的 HTTP 响应状态代码。 默认为“302”,您可以使用 301 进行永久重定向。 将此参数与 301 重定向选项一起使用时要小心。
$x_redirect_by 这只是应用重定向的应用程序,这很少会更改默认值,即 WordPress

如果用户未登录,模板重定向操作

要重定向未登录 WordPress 的用户,您现在可以使用 wp_redirect 函数来条件检查用户是否已登录,如下所示:

 add_action('template_redirect', 'redirect_if_user_not_logged_in');

功能 redirect_if_user_not_logged_in() {

	if ( is_page('slug || ID') && !is_user_logged_in() ) { //示例可以是 is_page(23) 其中 23 是页面 ID

		wp_redirect('http://your-redirect-page-here'); 
 
     exit;// 永远不要忘记这个退出,因为它对于 wp_redirect() 具有退出/死亡非常重要
   
   }
   
}

将条件检查的 slug 替换为您各自的页面,并替换上面代码中的重定向 URL,并将其添加到 functions.php 以将未登录的用户重定向到该页面 URL。

如果用户未登录,管理员初始化重定向操作

或者,如果未登录 WordPress,您可以挂接admin_init而不是template_redirect来重定向用户。

除了添加动作钩子之外,代码应该是相同的。 代码应如下所示:

 add_action('admin_init', 'redirect_if_user_not_logged_in');

功能 redirect_if_user_not_logged_in() {

if ( !is_user_logged_in() && is_page('slug') ) {

      wp_redirect('http://your-redirect-page-here'); 
   
   出口;
   }
}

当我们将此代码添加到默认的 WordPress 主题 functions.php 并为我们要创建重定向的页面和目标 URL 添加 slug 时,它可以完美地工作,如您所见:

如果未登录 WordPress 如何重定向

最后的想法

当您想在用户未登录 WordPress 的情况下创建重定向时,您需要首先使用我在该帖子中共享的代码检查用户是否已登录,然后使用wp_redirect()函数将新目的地添加到用户应该如果他们访问某个页面或帖子,则会被重定向。

可以将此代码添加到主题的 functions.php 文件中,也可以将其用作自定义 WordPress 插件的一部分。 重要的是要始终记住,当您使用wp_redirect函数时,永远不要忘记添加退出,因为此函数不会自动退出。

作为 WordPress 插件开发人员,您还可以考虑另一个 WordPress 重定向插件 wp_safe_redirect(),它提供了一种更好的重定向方式,因为它检查是否允许 $location 参数主机。

类似文章