首页 > 解决方案 > WP 查询适用于管理员角色,但不适用于其他角色

问题描述

这仅适用于管理员 - 当与非管理员一起使用时,它基本上返回为此帖子类型添加的最后一个帖子:

$ticket_args = array(
   'post_type' => 'event_ticket',
   'post_status' => array('publish', 'pending'),
   'posts_per_page' => 1,
   'meta_query' => array(
      array(
         'key' => '_token',
         'value' => $_GET['token'],
      ),
   ),
);

$tickets = get_posts($ticket_args);

这适用于所有角色:

$ticket_args = array(
   'post_type' => 'event_ticket',
   'post_status' => array('publish', 'pending'),
   'posts_per_page' => 1,
   'meta_key' => '_token',
   'meta_value' => $_GET['token']
);

$tickets = get_posts($ticket_args);

更清晰:

这两个语句的输出不一样。作为管理员用户,结果符合预期 - 返回包含与“token”的查询字符串参数匹配的元数据“_token”的单个“event_ticket”帖子。作为非管理员,结果是返回最后一个“event_type”帖子。

这是否与 meta_query 函数的上限或一般 WP 权限有关,或者我在 meta_query args 中有什么问题?

标签: wordpress

解决方案


我认为您需要使用以下代码指定用户角色:

$editor_query = new WP_User_Query(
    array(
        'role'              =>  array( 'editor', 'administrator' ),
        'meta_key'        => 'featured',
        'meta_value'      =>    'yes',
        'number'            =>  5
    )
);

将上述查询中的角色粘贴到您的代码中:

这一行 -> 'role' => array('editor', 'administrator' ),

检查它是否适用于not..在大括号中提及您的角色..


推荐阅读