2013-04-15 210 views
0

首先,SORRY的標題,我不知道如何用幾句話來解釋這個!通過另一個wp過濾器過濾meta_query的Wordpress結果

我有一個查詢,從他們有一個元鍵的main_query中刪除帖子/頁面。

但是,在一個特定的頁面(頭版)我也想過濾一個類別(頭版新聞)。我嘗試添加下面的代碼,但它打破了。

任何人都可以幫我完善這個請嗎?

爲清楚起見,我想全球的meta_keys和meta_keys和類別的一個模板而已,前page.php文件過濾

`函數hide_private_posts($查詢){

// If user isn't logged in, hide all private posts/pages 
if(!is_user_logged_in()) { 

    if ($query->is_main_query()) { 

     $query->set('meta_query', array(

      array(
        'key' => 'smartPrivate', 
        'value' => 'smartPrivate_loggedIn', 
        'compare' => '!=' 
      ), 
      array(
        'key' => 'smartPrivate', 
        'value' => 'smartPrivate_loggedInMentors', 
        'compare' => '!=' 
      ) 

     )); 
    } 

    // If user is logged in but a learner, show logged in posts/pages 
    } else if(is_user_sso_role(array('learner'))) { 

    if ($query->is_main_query()) { 

     $query->set('meta_query', array(

      array(
        'key' => 'smartPrivate', 
        'value' => 'smartPrivate_loggedInMentors', 
        'compare' => '!=' 
      ) 

     )); 
     } 

    } // Else don't filter posts and pages 

    if (is_front_page()) { 
     query_posts($query . '&category_name=front-page-news'); 
    } 

return $query; 
} 
add_filter('pre-get-posts' , 'hide_private_posts');` 

回答

0

好的 - 爲了關閉這個關閉。

我正在使用的查詢query_posts似乎重置循環並覆蓋之前放置的meta_queries。

因此,這工作正常,並保留meta_query篩選。

if ($query->is_home() && $query->is_main_query()) { 
    $query->set('category_name', 'front-page-news'); 
}