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 = 要使用的状态代码。例如,
301
、302
等。默认值为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
返回TRUE
or 。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_redirect
is_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/