0

WP_Query我知道如果用户登录,您可以使用它来返回所有状态为 的帖子private,但看不到如何为未登录的用户执行此操作?

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

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

但是,没有登录的用户怎么办?

4

2 回答 2

1

您可以使用 filter 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;
}
于 2013-10-03T12:02:52.960 回答
0

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

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

于 2013-10-03T11:37:48.703 回答