使用 cookie 超时注销受 Wordpress 密码保护的页面?

Logging out of Wordpress password protected pages with cookie timout?

我正在为特定客户使用 wordpress,因为他们需要自己编辑内容。有了这个,我根据客户的要求使用他们的页面密码保护。问题是,似乎设置的 cookie 永远不会超时。因此,一旦客户端输入密码,任何人都不必通过同一台机器上的同一浏览器再次输入密码。这使得它敞开着,任何人都可以走过去进入。因此,我认为解决此问题的最佳方法是在 cookie 上设置超时。但是,我不确定如何使用 php 函数来做到这一点。这是整个函数:

function post_password_required( $post = null ) {
    $post = get_post($post);

    if ( empty( $post->post_password ) )
        return false;

    if ( ! isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) )
        return true;

    require_once ABSPATH . WPINC . '/class-phpass.php';
    $hasher = new PasswordHash( 8, true );

    $hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
    if ( 0 !== strpos( $hash, '$P$B' ) )
        return true;

    return ! $hasher->CheckPassword( $post->post_password, $hash );
}

真的,我希望 cookie 在浏览器关闭时过期,否则每隔几个小时过期一次。关于添加什么以使 cookie 在设置后过期有什么建议吗?

我相信它可能必须添加到这一行:

$hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );

提前感谢您的任何建议。

使用 post_password_expires 过滤器有一种非常非常简单的方法可以做到这一点。默认情况下,cookie 在创建后 10 天过期。 要将其变成会话 cookie,return0. 应将以下内容添加到您的主题 functions.php 中:

function custom_password_cookie_expiry( $expires ) {
    return 0;  // Make it a session cookie
}
add_filter( 'post_password_expires', 'custom_password_cookie_expiry' );