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

如何阻止Wordpress帖子密码登录失败时生成wp-postpass_无效cookie

问题根因

你当前的header判断逻辑仅校验wp-postpass_前缀的cookie是否存在,但WordPress即使用户输入错误密码也会生成该前缀的cookie(仅存储的密码哈希值与正确值不匹配),因此会出现头部导航误显示的问题。

最优解决方案

直接使用WordPress原生的密码校验函数替换你原有header中的逻辑,无需手动读取校验cookie,原生函数会自动完成cookie有效性判断:

<!-- Check post password validation and hide menu if user is not authenticated -->
<?php
global $post;
// 原生函数判断当前页面是否需要密码、且用户未通过验证
if ( post_password_required( $post ) ) {
?>
<style type="text/css">#header {display:none !important;}</style>
<?php
}
?>

额外注意事项

你当前直接修改WordPress核心文件post-template.php的操作存在风险,后续WordPress版本更新会直接覆盖你的自定义代码。建议将自定义密码表单的逻辑迁移到当前主题的functions.php文件中,通过the_password_form过滤器实现自定义,避免核心文件修改带来的问题。

如果你确实需要实现「登录失败时不生成wp-postpass_前缀cookie」的需求,可以在主题functions.php中添加以下钩子代码,密码校验失败时自动清除已生成的无效cookie:

add_action( 'login_form_postpass', function() {
    global $post;
    $input_password = $_POST['post_password'] ?? '';
    if ( $post && ! hash_equals( $post->post_password, $input_password ) ) {
        // 密码错误,清除已设置的无效cookie
        setcookie( 'wp-postpass_' . COOKIEHASH, ' ', time() - YEAR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
    }
} );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:24:02