Wordpress,meta_filter_posts损坏了自定义菜单小部件

时间:2014-10-22 03:59:27

标签: php wordpress widget

当我将此代码添加到functions.php

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 - 小部件不再起作用了。
小部件仅显示widget-title,但不显示widget-content

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

但为什么呢?我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

  • 使用pre_get_posts时,应始终确保仅定位前端。 pre_get_posts改变所有类型的查询前端后端

  • is_tag()is_main_query()应为$query的成员变量

你可以做这样的事情

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