我正在用一个名为Order
的元键对页面上的一个自定义帖子进行排序,这个键由DESC
命令,然后是一个名为Sub order
的元键,由ASC
命令,但我无法理解如何在WordPress Admin区域中进行相同的排序,而且我无法找到任何将$query->set('property', 'value')
语法与数组结合在一起的示例,假设这是正确的方法。
工作页自定义查询是:
$args=array(
'post_type' => 'resumeposts',
'post_status' => 'publish',
'meta_query' => array(
'relation' => 'AND',
'resume_order' => array(
'key' => 'Order',
'type' => 'Numeric'
),
'resume_suborder' => array(
'key' => 'Sub order',
'type' => 'Numeric'
),
),
'orderby' => array(
'resume_order' => 'DESC',
'resume_suborder' => 'ASC'
),
'nopaging' => true // Disable post limit per page
);
我要向管理中添加子订单排序的现有排序顺序是:
function set_post_order_in_admin( $query ) {
if ( is_admin() ) {
if ( get_current_post_type() == "resumeposts" ) {
$query->set( 'meta_key', 'Order' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'DESC' );
}
}
}
add_action('pre_get_posts', 'set_post_order_in_admin');
发布于 2021-02-15 15:35:52
我找不到任何将
$query->set('property', 'value')
语法与数组结合在一起的示例,假设这是正确的方法
在$args
数组中,将meta_query
和orderby
定义为数组,它们都是WP_Query
的arg (或上面"property“的值),因此在自定义函数(set_post_order_in_admin()
)中,只需使用$query->set( 'meta_query', )
和$query->set( 'orderby', )
,如下所示:
// In the set_post_order_in_admin function:
// Replace these lines:
$query->set( 'meta_key', 'Order' );
$query->set( 'orderby', 'meta_value_num' );
$query->set( 'order', 'DESC' );
// with the following:
$query->set( 'meta_query', array(
'relation' => 'AND',
'resume_order' => array(
'key' => 'Order',
'type' => 'NUMERIC'
),
'resume_suborder' => array(
'key' => 'Sub order',
'type' => 'NUMERIC'
),
) );
$query->set( 'orderby', array(
// =>
'resume_order' => 'DESC',
'resume_suborder' => 'ASC'
) );
或者你说的是别的什么?
此外,只有在当前WP_Query
是主要的WordPress查询时才能运行筛选器,以避免自定义筛选器干扰其他WP_Query
调用。所以你可以做if ( is_admin() && $query->is_main_query() )
而不是只做if ( is_admin() )
。
https://wordpress.stackexchange.com/questions/383438
复制