WordPress的,meta_filter_posts损坏自定义菜单控件
问题描述:
当我将此代码添加到我的functions.php
WordPress的,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
-小工具正常工作。
但是为什么?我的代码有什么问题?
答
您这里有两个问题:
使用
pre_get_posts
,你应该始终确保你的目标只有前端。pre_get_posts
变造所有类型的查询前端和后端的$query
is_tag()
和is_main_query()
应该是成员变量,你可以做这样的事情
if(!is_admin() && $query->is_tag() && $query->is_main_query())