我有一个自定义的帖子类型“books”(设置)和一个自定义的分类法“book\\u cat”(作为这些帖子的类别)。我已将以下代码添加到函数中。php按照高级自定义字段日期字段对我的自定义分类法归档页面上的帖子进行排序,这很有魅力,但只有当我删除了针对图书的条件代码时,我似乎无法找出原因。
/*when listing books, show them in publication order*/
function my_pre_get_posts( $query ) {
// do not modify queries in the admin
if( is_admin() ) {
return $query;
}
// only modify queries for \'books\' post type
if( isset($query->query_vars[\'post_type\']) && $query->query_vars[\'post_type\'] == \'books\' ) {
$query->set(\'orderby\', \'meta_value\');
$query->set(\'meta_key\', \'published\');
$query->set(\'order\', \'ASC\');
}
// return
return $query;
}
add_action(\'pre_get_posts\', \'my_pre_get_posts\');
最合适的回答,由SO网友:Jacob Peattie 整理而成
如果要筛选分类法归档的查询,应检查查询是否针对该归档:
if ( $query->is_tax( \'book_cat\' ) ) {
$query->set(\'orderby\', \'meta_value\');
$query->set(\'meta_key\', \'published\');
$query->set(\'order\', \'ASC\');
}