You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让WordPress密码保护页面每次访问都要求输入密码?

WordPress密码保护页面强制每次访问验证及清除残留权限的解决方法

一、实现每次访问都要求输入密码

WordPress默认会通过Cookie保存密码验证状态,有效期默认是10天。要让每次访问都需要输入密码,只需修改Cookie的有效期为会话级(关闭浏览器即失效):

将以下代码添加到当前主题的functions.php文件中:

// 设置密码保护页面的Cookie为会话级,关闭浏览器即失效
function custom_post_password_expiry() {
    return 0; // 0表示会话Cookie,无持久有效期
}
add_filter('post_password_expires', 'custom_post_password_expiry');

如果需要极端严格的验证(比如每次刷新页面都要求输入),可以将返回值设为1(1秒有效期),但这种方式会大幅降低用户体验,一般不推荐。

二、删除密码后阻止用户通过残留Cookie进入

当你删除页面的密码保护后,之前验证过的用户浏览器中仍会留存有效的密码Cookie,导致他们无需验证就能访问。可以添加代码自动清除这类残留Cookie:

将以下代码同样添加到主题的functions.php文件中:

// 当页面无密码保护时,清除残留的密码验证Cookie
function clear_stale_password_cookie() {
    if (is_page() || is_single()) {
        $current_post = get_post();
        // 检查当前页面是否已取消密码保护
        if (empty($current_post->post_password)) {
            $cookie_name = 'wp-postpass_' . COOKIEHASH;
            if (isset($_COOKIE[$cookie_name])) {
                // 清除Cookie(设置过期时间为过去)
                setcookie($cookie_name, '', time() - 3600, COOKIEPATH, COOKIE_DOMAIN);
                $_COOKIE[$cookie_name] = '';
            }
        }
    }
}
add_action('template_redirect', 'clear_stale_password_cookie');

注意:修改主题文件前建议先备份,或者使用子主题添加代码,避免主题更新时代码丢失。

内容的提问来源于stack exchange,提问作者guynumber6

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 11:25:30