当我将此代码添加到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
- 小工具正常工作。
但为什么呢?我的代码出了什么问题?
答案 0 :(得分:1)
这里有两个问题:
使用pre_get_posts
时,应始终确保仅定位前端。 pre_get_posts
改变所有类型的查询前端和后端
is_tag()
和is_main_query()
应为$query
的成员变量
你可以做这样的事情
if(!is_admin() && $query->is_tag() && $query->is_main_query())