wordpress重定向到登录表单

时间:2016-02-18 12:38:15

标签: php wordpress

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

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

    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'然后我的功能很棒。当有人试图通过在浏览器网址中输入“example.com/about”时,我的功能无效,他可以访问我的网站。我做错了什么?我在我的模板function.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 );
 ?>

我将此模板设置为我的about页面中的fefault模板。没有解决方案。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用内置的auth_redirect()功能:

function restrict_access_if_logged_out(){

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

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

答案 1 :(得分:0)

您应该为受限制的页面创建模板页面,例如我们创建全宽页面模板,右侧边栏页面模板,左侧边栏模板等。在受限页面模板中调用您的函数。在创建页面时,从右侧的页面模板列表中选择受限制的模板。

如果它对您没有帮助,当您粘贴更多详细信息时,我们将能够为您提供帮助。

答案 2 :(得分:0)

方法:1 你可以将它添加到page.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();
});