【问题标题】:Sort orders by paid date in WooCommerce admin order list在 WooCommerce 管理订单列表中按付款日期对订单进行排序
【发布时间】:2022-01-26 11:48:00
【问题描述】:

我正在尝试按付款日期对商店订单进行排序,但出现了问题。

function sp_41964737_custom_product_order( $query ){
    global $typenow;

    if( is_admin() && $query->is_main_query() && $typenow == 'shop_order' ){
        $query->set( 'meta_key', '_date_paid' );
        $query->set( 'orderby', 'meta_value_num' );
        $query->set( 'order', 'DESC' );
    }
}
add_action( 'parse_query', 'sp_41964737_custom_product_order' );

应用此代码后,我的订单列表中除了已成功支付的订单外没有任何内容,因此实际上只有具有_date_paid 元数据的帖子。

有什么建议可以解决这个问题吗?

【问题讨论】:

    标签: wordpress woocommerce backend orders


    【解决方案1】:

    这是因为您当前的代码仅显示元键实际存在的订单。

    要解决这个问题,您可以使用:

    function action_parse_query( $query ) { 
        global $pagenow;
    
        // Initialize
        $query_vars = &$query->query_vars;
        
        // Only on WooCommerce admin order list
        if ( is_admin() && $query->is_main_query() && $pagenow == 'edit.php' && $query_vars['post_type'] == 'shop_order' ) {
            // Your meta key
            $meta_key = '_date_paid';
            
            // Define an additional meta query 
            $meta_query[] = array(
                'relation'    => 'OR',
                array(
                    'key'     => $meta_key,
                    'compare' => 'EXISTS',
                ),
                array(
                    'key'     => $meta_key,
                    'compare' => 'NOT EXISTS',
                )
            );
            
            // Set
            $query->set( 'orderby', 'meta_value_num' );
            $query->set( 'order', 'DESC' );
            $query->set( 'meta_query', $meta_query );
        }
    }
    add_action( 'parse_query', 'action_parse_query', 10, 1 );
    

    概念证明:将首先显示此元存在的订单。

    【讨论】:

    • 现在我可以看到其他店铺订单,但它显示的是其他订单之间没有付款日期的店铺订单!他们应该在列表的底部。
    • @sss 答案已更新,您可以看到它按预期工作。请阅读What should I do when someone answers my question?决定答案是否有用,如果我的答案有效,您可以accept它和/或upvote它。 (如果您获得了适当的投票特权)
    猜你喜欢
    • 2023-01-25
    • 2019-07-14
    • 1970-01-01
    • 2018-05-09
    • 2019-09-18
    • 2016-07-10
    • 2018-10-07
    • 2019-07-18
    • 2017-03-17
    相关资源
    最近更新 更多