如何使用 WordPress 重定向登录用户

WordPress 提供了多种功能来重定向登录用户。那么哪个最好呢?这真的取决于你的目标;它们都是很好的方法,这取决于您要完成的工作。

在这个DigWP教程中,我们解释了这些方法中的每一个以及一些有用的提示和技巧。这些技术使您能够将登录用户重定向到内部页面、外部页面,甚至将他们返回到当前页面。它们是“ol 腰带”中的一些很棒的工具。所以让我们深入研究..

wp_redirect

wp_redirect函数用于将所有用户重定向到任何绝对URI。绝对 URI 基本上是完整的URL,如下所示:

  • https://example.com/book/
  • https://example.com/wp-content/images/redirecting-users.jpg
  • ftp://example.com/transfer/

要使用 wp_redirect 重定向用户,请将以下PHP代码段放在您的主题文件中:

<?php wp_redirect('http://example.com/'); exit; ?>

的参数wp_redirect两个

  • $location = 用户将被重定向到的绝对 URI。没有默认值。
  • $status = 要使用的状态代码。例如,301302等。默认值为302

您可以为参数使用模板标签$location,例如:

<?php // redirect to the home page
wp_redirect(home_url()); exit; ?>

<?php // redirect back to current page
wp_redirect(get_permalink()); exit; ?>

要使用 default 以外的状态代码,请按302如下方式指定:

<?php wp_redirect('http://example.com/', 301); exit; ?>

该代码将example.com与状态代码一起发送给用户301(永久移动)。默认值302应用于临时重定向。了解有关状态代码的更多信息。

auth_redirect

接下来,我们有auth_redirect,这是一个“需要用户登录才能访问页面的简单功能”。例如,假设您有一个仅供登录用户使用的“下载”页面。为了防止未经授权的访问,我们将在下载页面模板的顶部添加以下代码:

<?php auth_redirect(); ?>

这个非常有用的功能检查当前用户是否登录,如果没有,则将他们重定向到登录页面。默认情况下,用户将被重定向回他们来自的页面(例如,下载页面)。目前这个函数不接受任何参数,但是有像$location这样的东西会让它更棒;)

wp_logout_url

wp_logout_url函数返回您站点的Logout Page的URL。但它也可以使用参数将用户重定向到任何 URL ,如下所示:$redirect

<?php echo wp_logout_url($redirect); ?>

$redirect参数是一个包含重定向 URL 的字符串。这里有些例子:

<!-- Logout & redirect to the home page -->
<a href="<?php echo wp_logout_url(home_url()); ?>">Logout</a>

<!-- Logout & redirect to current page -->
<a href="<?php echo wp_logout_url(get_permalink()); ?>">Logout</a>

<!-- Logout & redirect to specific URL -->
<a href="<?php echo wp_logout_url('http://example.com/'); ?>">Logout</a>

自动注销链接很棒,但随后的重定向是我们在自定义登录/注册教程中使用的超级有用的工具。

is_user_logged_in

最后我们有is_user_logged_in函数,它在技术上不做任何重定向,但可以让你检查用户是否登录。这是一个适用于任何主题模板文件的简单示例:

<?php if (is_user_logged_in()) { echo "logged in"; } else { echo "not logged in"; } ?>

该函数根据用户的状态is_user_logged_in返回TRUEor 。FALSE因此,要向登录用户显示自定义内容,您可以执行以下操作:

<?php if (is_user_logged_in()) { ?>

	<p>Welcome, registered user!</p>

<?php } else { // not logged in ?>

	<p>Welcome, visitor!</p>

<?php } ?>

您可以与其他模板标签和 PHP 片段混合匹配is_user_logged_in以返回更精细的结果。例如,我们可以根据记录的状态位置提供自定义内容:

<?php if (is_user_logged_in()) {

	if (is_page()) {
		echo "Logged-in user visiting a page";

	} elseif (is_feed()) {
		echo "Logged-in user viewing a feed";

	} elseif (is_search()) {
		echo "Logged-in user doing a search";

	} else {
		echo "Logged-in user doing something else";
	}

} else { // user is not logged-in

	if (is_page()) {
		echo "Normal visitor on a page";

	} elseif (is_feed()) {
		echo "Normal visitor viewing a feed";

	} elseif (is_search()) {
		echo "Normal visitor doing a search";

	} else {
		echo "Normal visitor doing something else";
	}

} ?>

此示例演示了 WordPress 条件标签的灵活性以及如何is_user_logged_in将另一层控制添加到混合中。

关于 auth_redirect 和 is_user_logged_in 的注意事项

正如这里所讨论的auth_redirect目前似乎有点奇怪,登录后重定向不起作用。用户不会在登录后返回到当前页面,而是始终回到登录页面。看起来该功能无法识别新的auth_redirect“登录”用户状态,因此它只是不断将用户发送回login.php.

因此,在解决此问题之前,有一个简单的解决方法,其中涉及与结合 来做auth_redirect应该的事情。所需要的只是放置在主题模板顶部的以下代码片段:auth_redirectis_user_logged_in

<?php if (!is_user_logged_in()) { auth_redirect(); } ?>

使用这种技术,auth_redirect仅在用户未登录时执行。所以是的,这是一个 hack,但它工作得很好,如果/何时auth_redirect修复,它应该继续工作。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/wordpress/%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8-wordpress-%e9%87%8d%e5%ae%9a%e5%90%91%e7%99%bb%e5%bd%95%e7%94%a8%e6%88%b7/

(0)
牛奇网牛奇网
上一篇 2022年10月24日
下一篇 2022年10月25日

相关推荐

发表回复

登录后才能评论