2016-04-22 66 views
0

我試圖修改後置類型「產品」的所有查詢,以便只顯示產品/帖子是否具有meta_value需要更大的「wholesale_price」的某個meta_key大於0

這裏是我有:

add_action('pre_get_posts', 'rc_modify_query_get_design_projects'); 
function rc_modify_query_get_design_projects($query) { 

    if($query->is_main_query() && $query->query_vars['post_type'] == 'product') { 

    $query->set('meta_key', 'wholesale_price'); 
    $query->set('meta_compare', '>'); 
    $query->set('meta_value', '0'); 

} 

}

出於某種原因,這仍然返回的一切。這是做事的正確方式嗎?

+1

我想你只是缺少'return $ query;'在最後。 –

+0

我剛剛添加了這個,但一切仍然返回。 – danyo

+0

那麼試試這個:'$ query-> set('meta_query',array( array( 'key'=>'wholesale_price', 'value'=> 0, 'compare'=>'> ', 'type'=>'numeric' ) ));' 而不是您的: '$ query-> set('meta_key','wholesale_price'); $ query-> set('meta_compare','>'); $ query-> set('meta_value','0');' –

回答

0

問題是你設置你的方法meta_query。你應該閱讀WP_Query的功能,因爲meta查詢不是那麼簡單。

你需要做更多的東西,像這樣:

add_action('pre_get_posts', 'rc_modify_query_get_design_projects'); 

function rc_modify_query_get_design_projects($query) { 
    if($query->is_main_query() && $query->query_vars['post_type'] == 'product') { 
     //Get original meta query 
     $meta_query = $query->get('meta_query'); 

     // Add your criteria 
     $meta_query[] = array(
       'key'  => 'wholesale_price', 
       'value' => 0, 
       'compare' => '>', 
     );  

     // Set the meta query to the complete, altered query 
     $query->set('meta_query',$meta_query); 
} 

而且沒有必要在這個函數返回任何東西。