2014-10-17 98 views
2

我必須使用woocommerce排除類別循環產品頁面中的一些產品。只有那些產品,在元表中具有特定的價值纔會被排除。我寫了下面的代碼,但這不適合我。請有人幫助我。使用woocommerce從循環中排除產品

add_filter('pre_get_posts', 'custom_pre_get_posts_query'); 

function custom_pre_get_posts_query($q) { 

     if (! $q->is_main_query()) return; 
     if (! $q->is_post_type_archive()) return; 

    $q->set('meta_query', array(array(
       array(
        'key' => '_auction_closed', 
         'compare' => 'NOT EXISTS' 
        ) 
       ) 
       ) 
      ); 

    remove_filter('pre_get_posts', 'custom_pre_get_posts_query'); 

} 

回答

1

嘗試下面的代碼:

add_filter('pre_get_posts', 'custom_pre_get_posts_query'); 

function custom_pre_get_posts_query($q) { 

    if (! $q->is_main_query()) return; 
    if (! $q->is_post_type_archive()) return; 

    $meta_query = $q->get('meta_query'); 
    $meta_query[] = array(
     'key'=>'_auction_closed', 
     'compare'=>'NOT EXISTS', 
     ); 
    $q->set('meta_query',$meta_query); 

    remove_filter('pre_get_posts', 'custom_pre_get_posts_query'); 

} 
+0

遺憾不是爲我工作......... – 2014-10-17 13:55:37

+0

它在這裏工作的罰款。在數據庫中檢查一次meta_key _auction_closed「是否存在於postmeta表中? – 2014-10-17 16:12:33

+0

該功能的主要目的是顯示沒有元鍵'_auction_closed'的產品。我的一些產品有meta key' _auction_closed',但有些沒有,我只需要展示那些沒有這個meta key的產品,而這在我的使用woocommerce的分類頁面上沒有作用。 – 2014-10-18 05:56:58