WordPress重定向到登录表单


wordpress redirect to login form

我知道这是我的问题的一些答案,但我不知道我的问题是否存在于其他寻求帮助的人身上。

有这个功能可以帮助我在访问我网站的任何内容之前重定向用户登录:

    function restrict_access_if_logged_out(){
    if (!is_user_logged_in() && !is_home()){
        wp_safe_redirect(wp_login_url(get_permalink()));
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

该功能工作正常,但我有一个问题。当有人导航到我的主页并单击此处的链接:"example.com/about"时,我的函数运行良好。当有人试图通过在浏览器 url 中输入此内容来直接转到"example.com/about"时,我的函数不起作用,他可以访问我的网站。我做错了什么?我已经在我的模板函数.php文件中编写了我的函数。

我刚刚创建了一个名为restriction_page.php的页面模板:

<?php
/*
Template Name: My Restricted Page
*/
?>
<h1>Hello There</h1>
<?php
function restrict_access_if_logged_out(){
    if (!is_user_logged_in() && !is_home()){
        wp_safe_redirect(wp_login_url());
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );
 ?>

我在"关于"页面中将此模板设置为"fefault 模板"。没有解决方案。

有什么想法吗?

您可以使用内置的auth_redirect()函数来实现此目的:

function restrict_access_if_logged_out(){
    if ( !is_user_logged_in() ){
        auth_redirect();
    }
}
add_action( 'wp', 'restrict_access_if_logged_out', 3 );

注意:这应该放在您的主题函数.php文件中

方法 :1您可以将其添加到页面顶部.php

如果要添加更多页面,只需添加 ||(或)像这样运算符:

<?php
$pageTitle == get_the_title();
  if($pageTitle == 'Submit' || $pageTitle =='NewPage') {
       if (!is_user_logged_in()) {
         redirect code
     } else {
         page code
     }
  } else {
  page code
}
?>

方法:2

将其写入插件:

add_action( 'template_redirect', 'auth_redirect' );

这将强制所有访问者登录(如果尚未登录)。

在某些情况下,每次都会要求登录。这可能会更好:

add_action( 'template_redirect', function() {
    is_user_logged_in() || auth_redirect();
});

您应该为受限页面创建一个模板页面,就像我们创建全宽页面模板、右侧边栏页面模板、左侧边栏模板等一样。并在受限页面模板中调用您的函数。创建页面时,请从右侧页面模板列表中选择受限模板。

如果它对你没有帮助,当你更详细地粘贴更多代码时,我们将能够帮助你。