首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在管理区域内按两个元键排序?

如何在管理区域内按两个元键排序?
EN

WordPress Development用户
提问于 2021-02-15 21:57:56
回答 1查看 42关注 0票数 0

我正在用一个名为Order的元键对页面上的一个自定义帖子进行排序,这个键由DESC命令,然后是一个名为Sub order的元键,由ASC命令,但我无法理解如何在WordPress Admin区域中进行相同的排序,而且我无法找到任何将$query->set('property', 'value')语法与数组结合在一起的示例,假设这是正确的方法。

工作页自定义查询是:

代码语言:javascript
运行
复制
$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
);

我要向管理中添加子订单排序的现有排序顺序是:

代码语言:javascript
运行
复制
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');
EN

回答 1

WordPress Development用户

回答已采纳

发布于 2021-02-15 23:35:52

我找不到任何将$query->set('property', 'value')语法与数组结合在一起的示例,假设这是正确的方法

$args数组中,将meta_queryorderby定义为数组,它们都是WP_Query的arg (或上面"property“的值),因此在自定义函数(set_post_order_in_admin())中,只需使用$query->set( 'meta_query', )$query->set( 'orderby', ),如下所示:

代码语言:javascript
运行
复制
// 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() )

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/383438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档