2014-03-26 22 views
0

我有一個微粒密鑰'CC101_type'有大約6000個不同元值的帖子。 現在我想獲取具有特定元值的帖子的所有條款。如何在WordPress中獲取具有特定元值的帖子的所有自定義術語?

$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個帖子開始工作時。

有沒有其他方法可以做到這一點?

+1

當您嘗試獲取超過800或1000的值時,WordPress將會中斷查詢。所以你需要使用自定義的'SQL Query'來獲取帖子。 –

+0

感謝您的支持,您可以給我一個關於該自定義sql查詢的想法。 –

回答

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. 
} 

更改查詢。

希望它會有所幫助。

+0

感謝您的幫助,它爲我工作。 –

相關問題