使用cookie timout注销Wordpress密码保护页面?

did*_*dyg 1 php passwords cookies wordpress

我正在为特定客户使用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 );
}
Run Code Online (Sandbox Code Playgroud)

真的,我希望在浏览器关闭时cookie过期,否则每隔几个小时就会过期.有关添加什么以使cookie在设置后过期的任何建议?

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

$hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
Run Code Online (Sandbox Code Playgroud)

提前感谢任何建议.

rne*_*ius 5

使用post_password_expires过滤器有一种更简单的方法.默认情况下,Cookie会在创建后10天到期.要将其转换为会话cookie,请返回0.以下内容应添加到主题的functions.php中:

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

  • 它*是一个问题,特别是因为这是一个客户端(除非您完全禁用WordPress更新).否则,核心更新期间可能会覆盖对核心文件的更改.有时需要编辑核心......但这不应该是其中之一. (2认同)