2016-04-22 10 views
0

私はポストタイプ "products"のすべてのクエリを変更しようとしていますが、meta_valueがより大きい必要がある特定のmeta_key "wholesale_price"ここでは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の機能を参照する必要があります。

あなたはより多くのようにような何かをする必要があります。

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); 
} 

そして必要はありませんが、この機能には何も返すこと。