我有大约6000个具有不同元值的帖子到微粒键'CC101_type'。现在我想获取那些具有特定元值的帖子的所有条款。
$args = array(
'post_type' => 'coupon',
'posts_per_page' => -1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'CC101_deactive',
'value' => "off",
),
array(
'Key' => 'CC101_type',
'value' => 'Deals'
)
)
);
$query = new WP_Query($args);
$all_categories = array();
foreach($query->posts as $post=>$p){
$id = $p->ID;
$terms = wp_get_post_terms( $id, 'coupon_category', array("fields" => "all") );
foreach($terms as $k => $cat){
$all_categories[$cat->term_id] = $cat->name;
}
}
我尝试通过首先基于元值获取所有帖子,然后获得这些条款来执行上述任务。但是当我在另一边获得所有帖子'posts_per_page' => -1,
时,它没有返回任何内容,当我将其限制为20个帖子时,它开始工作。
还有别的办法吗?
您可以使用以下自定义查询:-
global $wpdb;
$args = "SELECT * FROM $wpdb->posts
INNER JOIN $wpdb->postmeta AS PM1 ON ($wpdb->posts.ID = PM1.post_id)
INNER JOIN $wpdb->postmeta AS PM2 ON ($wpdb->posts.ID = PM2.post_id)
WHERE $wpdb->posts.`post_type` = 'coupon'
AND (PM1.meta_key = 'CC101_deactive' AND PM1.meta_value='off')
AND (PM2.meta_key = 'CC101_type' AND PM2.meta_value='Deals')
AND $wpdb->posts.`post_status` = 'publish'
ORDER BY $wpdb->posts.`ID`";
$loop = $wpdb->get_results( $args );
foreach ($loop as $post)
{
//Here $post is single post object.
//Do your action.
}
根据需要更改查询。