如何向未登录的用户显示密码保护页面?

时间:2013-10-03 09:52:12

标签: wordpress wordpress-plugin

我知道如果用户 登录后您可以使用WP_Query返回状态为private的所有帖子,但无法查看如何执行此操作没有登录的用户?

EG:对于已登录的用户......

$query = new WP_Query( 'post_status=private' );

但是,对于登录的用户该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用过滤器posts_clauses,例如:

add_filter( 'posts_clauses', 'wpse70214_posts_clauses' );

function wpse70214_posts_clauses( $pieces )
{
    global $wpdb;
    if( !is_user_logged_in() )
        $pieces['where'] = str_replace( 
            "post_status = 'publish')", 
            "post_status = 'publish' OR $wpdb->posts.post_status = 'private') ",
            $pieces['where']
        );

    return $pieces;
}

答案 1 :(得分:0)

您可以创建一个访客用户,如果当前用户未登录,则使用代码将其作为访客登录...然后您的查询将起作用。

在构建解决方案时,您需要查看组和权限。此外,最后要考虑的是如何向访客用户显示登录屏幕,以便他们可以作为真实用户登录。