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

时间:2021-02-15 作者:edwinbradford

我正在通过一个名为Order 订购人DESC 后跟一个名为Sub order 订购人ASC 但我不知道如何在WordPress管理区域进行同样的排序,我也找不到任何结合$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\');

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我找不到任何结合$query->set(\'property\', \'value\') 使用数组的语法,假设这是正确的方法

在您的$args 数组,您定义了meta_queryorderby 作为数组,它们各自是WP_Query (或上述“属性”的值),因此在自定义函数中(set_post_order_in_admin()), 仅使用$query->set( \'meta_query\', <array> )$query->set( \'orderby\', <array> ) 像这样:

// 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(
    // <orderby>      => <order>
    \'resume_order\'    => \'DESC\',
    \'resume_suborder\' => \'ASC\'
) );
或者你是说别的什么?

此外,仅当当前WP_Query 是WordPress的主要查询,以避免自定义筛选器与其他WP_Query 呼叫。所以你会这么做if ( is_admin() && $query->is_main_query() ) 而不仅仅是if ( is_admin() ).

相关推荐

数据不能通过管理页面中的AJAX和jQuery插入和更新?

我制作了自定义插件并完成了crud操作,在管理页面中显示所有数据,使用了ajax和jquery。数据已成功删除,但未插入或更新。数据成功通过ajax,但未插入。还有,如果输入块为空,我会放置一些数据并更新它,我会看到什么。它得到了第一行数据错误-https://prnt.sc/wnzqjr用于插入数据的ajaxjQuery(\'.ins_btn\').click(function(){ var id = jQuery(this).attr(\'data-id\');