WP查询适用于管理员角色,但不适用于其他角色

时间:2019-06-14 01:55:19

标签: wordpress

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

$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);

更清晰:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

从上面的查询中获取角色,将其粘贴到您的代码中:

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

检查它是否有效。.在括号中提及您的角色。