我有大约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个帖子开始工作时,它什么都没有返回。
还有其他办法吗?
答案 0 :(得分:2)
您可以使用以下自定义查询: -
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.
}
根据您的需要更改查询。
希望它会有所帮助。