I am having problems when querying a WP_Query Object when a user has a role different than administrator
My WP_Query is this:
function remove_new_c_post($author_id,$value_id) {
$query = new WP_Query( array(
'post_type' => 'custom_post_type',
'author' => $author_id,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'value_id',
'value' => $value_id,
'compare' => 'LIKE',
),
),
'order' => 'ASC'
));
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
wp_delete_post( get_the_ID() );
endwhile;
wp_reset_postdata();
endif;
}
For some reason when the query is run by a user other than the administrator, this is the result:
WP_Query Object
(
[query] => Array
(
[post_type] => custom_post_type
=> 70
[meta_query] => Array
(
[relation] => AND
[0] => Array
(
[key] => value_id
[value] => 86
[compare] => LIKE
)
)
[order] => ASC
)
[query_vars] => Array
(
[post_type] => custom_post_type
=> 86 //<--- THIS SHOULD BE 70
[meta_query] => Array
(
[relation] => AND
[0] => Array
(
[key] => value_id
[value] => 86
[compare] => LIKE
)
)
[order] => ASC
...
Please notice the author in query_vars
it is 86 when it should be 70. Why is this being altered?
EDIT:
I just tried to set the query_var $query->set( 'author', $author_id );
and it kept the author_id intact; howevever, the mysql keeps getting altered:
[request] => SELECT SQL_CALC_FOUND_ROWS dlwp_posts.ID
FROM dlwp_posts
INNER JOIN dlwp_postmeta ON ( dlwp_posts.ID = dlwp_postmeta.post_id )
WHERE 1=1 AND dlwp_posts.post_author IN (86)
AND dlwp_posts.post_type="custom_post_type"
AND (dlwp_posts.post_status="publish"
OR dlwp_posts.post_status="future"
OR dlwp_posts.post_status="draft"
OR dlwp_posts.post_status="pending"
OR dlwp_posts.post_status="private")
AND (( dlwp_postmeta.meta_key = 'value_id'
AND CAST(dlwp_postmeta.meta_value AS CHAR) LIKE '%86%' )