2017-02-13 82 views
0

我想使用pre_get_posts修改查詢,以便只有給學生折扣的學校顯示在存檔頁面上。有問題的字段被稱爲'student_discount',並且是複選框,如果爲true,則返回1。WordPress的pre_get_posts不改變查詢

當我使用get_post_custom來回顯它是'_student_discount:Array'的值。

這是我目前:

function show_discounts($query) { 
    if(!is_admin() && $query->is_main_query() && is_post_type_archive('job_listing')) { 
    $query->set('meta_query', array(  
     array(
       'key' => 'student_discount', 
       'value' => 1, 
       'compare' => '=' 
     ), 
));  
} 
add_action('pre_get_posts', 'show_discounts'); 

回答

0

試試吧。

更改此:

is_post_type_archive('job_listing') 

對於這一點:

$query->query_vars['post_type'] === 'job_listing') 

結果:

function show_discounts($query) { 
    if(!is_admin() && $query->is_main_query() && $query->query_vars['post_type'] === 'job_listing') { 
    $query->set('meta_query', array(  
     array(
       'key' => 'student_discount', 
       'value' => 1, 
       'compare' => '=' 
     ), 
));  
} 
add_action('pre_get_posts', 'show_discounts'); 

讓我知道,如果你能夠使它發揮作用。