我尝试使用 pre_get_posts
Hook - track
帖子类型结果 administration
帖子类型结果按帖子类型确定搜索结果的优先级。
我不确定是否可以使用 $query->set( 'orderby', 'type' )
来完成。在 WP_Query 中使用相同的参数是可行的,但我想避免这种情况。
这是完整的功能:
function tcb_pre_get_posts( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_search() ) {
$query->set( 'post_type', array( 'track', 'administration' ) );
$query->set( 'posts_per_page', 15 );
$query->set( 'orderby', 'type' );
// orderby 'post_type' did not work as well
}
}
add_action( 'pre_get_posts', 'tcb_pre_get_posts', 1 );
虽然 track
写在 post_type
数组中的 administration
之前,但在结果中我看到 administration
位于 跟踪
。
最佳答案
您似乎希望更改自定义帖子类型的显示顺序,因为您只需指定 ASC
或 DESC
使用 $query->set('order','ASC');
:
function tcb_pre_get_posts( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_search() ) {
$query->set( 'post_type', array( 'track', 'administration' ) );
$query->set( 'posts_per_page', 15 );
$query->set( 'orderby', 'type' );
$query->set( 'order', 'ASC' ); // or DESC
}
}
add_action( 'pre_get_posts', 'tcb_pre_get_posts', 1 );
关于wordpress - $query->set orderby 类型未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563784/