2014-10-22 20 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())