我知道如果用户 登录后您可以使用WP_Query
返回状态为private
的所有帖子,但无法查看如何执行此操作没有登录的用户?
EG:对于已登录的用户......
$query = new WP_Query( 'post_status=private' );
但是,对于不登录的用户该怎么办?
答案 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)
您可以创建一个访客用户,如果当前用户未登录,则使用代码将其作为访客登录...然后您的查询将起作用。
在构建解决方案时,您需要查看组和权限。此外,最后要考虑的是如何向访客用户显示登录屏幕,以便他们可以作为真实用户登录。