Wordpress密码保护页面实际上不受保护


Wordpress password protected page not actually protected

我有密码保护页面的问题。我已将可见性设置为密码保护,但当我从我常用的浏览器(Chrome)以及Firefox和IE11访问页面(注销)时,我仍然可以访问该页面,但页面标题现在显示 protected: page title

在使用密码保护法典条目中,它说WordPress将此密码存储在浏览器cookie中,因此读者不必在多次访问同一页面时重新输入密码。我试图有页面完全锁定,所以用户需要输入一个密码,每次他们尝试去那个页面。我找到的所有谷歌帖子都是针对密码保护的帖子,我找不到任何插件,专门做页面,他们都说WP有内置的,但我似乎不能弄清楚。

我真的不知道您为什么要折磨已经通过身份验证的用户,但是您可以做以下两件事之一:

1 -设置你自己的cookie

function o99_set_newvisitor_cookie() {
    if ( !is_admin() && !isset($_COOKIE['sitename_newvisitor'])) {
        setcookie('sitename_newvisitor', 1, time()+3600*24*100, COOKIEPATH, COOKIE_DOMAIN, false); // change time ...
    }
}
add_action( 'init', 'o99_set_newvisitor_cookie');

和之后的主题

if (isset($_COOKIE['sitename_newvisitor'])) {
     echo 'We need password'; 
}
else {
     echo 'we do not need password'; 
}

2。使用auth_cookie_expiration过滤器减少认证会话长度。(以下只是一个例子-根据自己的需要更改)

function o99_cookie_expiration( $expiration, $user_id, $remember ) {
    return $remember ? $expiration : 600;
}
add_filter( 'auth_cookie_expiration', 'o99_cookie_expiration', 99, 3 );

现在取决于你的时间设置,这将把用户踢出。

其他,不推荐的选项将是JS覆盖窗口,或session控件与php

但是,就像之前说的,我真的不知道你为什么要那样做——我很确定你没有真正想清楚。

最后一件事-你是否检查过你的主题文件,看看他们是否真的对所有数据做了条件保护?

  if ( !post_password_required() ) {
    echo 'protected content'; //or content or title or whatever ..
  }