当使用受密码保护的页面时,是否可以显示不同的可湿性粉剂菜单?

时间:2017-10-20 作者:Ryan Coolwebs

我正在使用Wordpress密码页面保护功能来保护我正在工作的网站上的一些页面。这是一个大型多站点安装的一部分,这就是为什么我不想接近WP Users表(用于渗透的向量曲面较少),因为这可能会对其他站点产生不利影响。

内容本身不是优质或付费内容,只是本质上很敏感。我想做的是,设置一些带有密码保护的页面,如果/当访问者访问这些页面时,它们会被强制重定向到登录页面。在此处排序:

    <?php if ( !post_password_required() ) {
        echo \'this page is available for everyone to see\';
    } else if ( post_password_required() && !is_page( 143 ) ) {
        echo \'This page is password protected\';
        wp_redirect( home_url( \'/rm_login/\' ) );
        exit;
    }?>
这是第一次“粗切”。我的核心问题是,当WP可以检测到用户有效地“解锁”了安全页面时,我想用“受保护”版本的菜单替换主nav。我的代码:

function my_wp_nav_menu_args( $args = \'\' ) {
global $post;
    if( !post_password_required() ) {
        $args[\'menu\'] = \'Primary-menu\';
    } else {
        $args[\'menu\'] = \'Protected-menu\';
    }
    return $args;
}
add_filter( \'wp_nav_menu_args\', \'my_wp_nav_menu_args\' );
但是,当用户点击“登录”页面时,它会与受保护的菜单交换。我知道我的代码只是检测页面上是否需要密码,这就是为什么会发生这种情况-但是否还有其他条件可以检查以验证/验证是否已解锁页面?

我知道这个方法存储了一个JS cookie,但它看起来是随机的,过期得相当快(对JS进行任何类型的检查都有点“古怪”)。

当我使用empty( $post->post_password ) 检查状况。所有这些条件都会检查“需要密码”,但是否可以检查“输入密码”??

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

如果要检查帖子是否有密码,并且密码是否已输入,请同时选中这两个选项post_password_required() $post->post_password:

$post = get_queried_object();

if ( ! post_password_required( $post ) && ! empty( $post->post_password ) ) {
    // Post has a password, but has been entered.
}

结束

相关推荐

Pre_Get_Posts有时以随机顺序显示帖子

我正在使用以下过滤器,以便将类别模板上显示的帖子数量从10个增加到30个(我想为网站的其余部分保留10个)// Modify number of results shown function modify_query_amount_shown($query){ if ($query->is_category) { $query->set(\'posts_per_page\', 30); $query->set(\'o