Wordpress需要登录

时间:2014-07-18 15:41:16

标签: php wordpress post login get

我在WordPress网站上有一些限制内容。我想要的很简单(我想)。如果用户未登录,请重定向到/login页面,并显示错误,例如"您必须登录才能查看此内容"。问题是我不知道GET(或POST)请求变量是什么来实现这一点。是否有error_message变量甚至是login_required变量或我可以设置的任何事情来实现这一点?我用谷歌搜索了这个,但似乎找不到多少。

if( !is_user_logged_in() ){
    wp_redirect('/login?error_message=ERRORMESSAGEHERE&redirect_to=http%3A%2F%2Fexample.dev%2Fwp-admin%2F&reauth=1');
}

注意:我更愿意避免使用任何插件来完成此任务。虽然推荐插件是好的,但它并不是我正在寻找的解决方案。

2 个答案:

答案 0 :(得分:0)

嗯我认为在Wordpress本身没有默认的GET / POST参数,但是你想要的东西似乎也是主题的一部分。

转到路径/到/ wordpress / wp-content / themes / yourtheme / header.php

并在最后添加一些内容:

if($_GET['error_message']){
  echo '<div class="errormessage"> <strong>Error: </strong> '.htmlentities($_GET['error_message']).'</div>';
}

您可以轻松使用CSS来设置“错误框”的样式。请注意,“htmlentites”对于防止您网站上的XSS攻击是必要的。

答案 1 :(得分:0)

经过多次挖掘后,我找到了this over on wordpress.stackexchange.com。以下是我最终可能使用的示例:

页的模板/定制的template.php:

if( !is_user_logged_in() ){
    wp_redirect('/login?err=err1&redirect_to=http%3A%2F%2Fexample.dev%2Fwp-admin%2F&reauth=1');
}

<强>的functions.php:

add_action('login_head','custom_errors');
function custom_errors() {
    global $error;
    if( !empty($_GET['err']) ){
        $err = $_GET['err'];
        switch ($err) {
            case 'err1': $error = 'Error 1'; break;
            case 'err2': $error = 'Error 2'; break;
        }
    }
}