2014-10-22 38 views
0

當我將此代碼添加到我的functions.phpWordPress的,meta_filter_posts損壞自定義菜單控件

function meta_filter_posts($query) 
{ 
    if(is_tag() && is_main_query()) 
    { 
     $currentTagId = get_queried_object()->term_id; 
     $query->set('orderby','meta_value_num'); 
     $query->set('meta_key', 'rank_tag_'.$currentTagId.''); 
     $query->set('order', 'ASC'); 
    } 
} 
add_filter('pre_get_posts', 'meta_filter_posts'); 

我的側邊欄custom menu -widgets不工作了。
小部件只顯示widget-title,但不顯示widget-content

其餘的例如text-小工具正常工作。

但是爲什麼?我的代碼有什麼問題?

回答

1

您這裏有兩個問題:

  • 使用pre_get_posts,你應該始終確保你的目標只有前端。 pre_get_posts變造所有類型的查詢前端後端的$query

  • is_tag()is_main_query()應該是成員變量,你可以做這樣的事情

    if(!is_admin() && $query->is_tag() && $query->is_main_query())