wordpress 如何在Woocommerce中按收货方列对订单表进行排序?

xcitsw88  于 2023-06-21  发布在  WordPress
关注(0)|答案(1)|浏览(170)

我试图使Woocommerce订单表中的“Ship to”列可按“Ship To”地址排序。
我知道“收货地址”值是从多个表单字段聚合而来的,但我无法让它们按“发货地址1”排序。
如何在WooCommerce的订单表中使“送货”地址可排序?
先谢谢你的帮助。
我目前最好的尝试是使shipping_address_1(美国的街道地址)可排序:

// Make sorting by column
add_action('pre_get_posts', 'custom_street_address_orderby');
function custom_street_address_orderby($query)
{
    if (!is_admin()) return;
    
    $orderby = $query->get('orderby');
    if ('_shipping_address_1' == $orderby) {
        $query->set('meta_key', '_shipping_address_1');
        $query->set('orderby', 'meta_value_num');
    }
}
igsr9ssn

igsr9ssn1#

在WooCommerce管理订单中,您可以使用以下方法使**“Ship to”**列可排序(基于'_shipping_address_1'meta_key):

// Make existing "Ship to" column sortable on admin orders list
add_filter( "manage_edit-shop_order_sortable_columns", 'shop_order_column_meta_field_sortable' );
function shop_order_column_meta_field_sortable( $columns )
{
    $meta_key = '_shipping_address_1';
    return wp_parse_args( array('shipping_address' => $meta_key), $columns );
}

// Make "Ship to" sorting properly (by numerical values)
add_action('pre_get_posts', 'shop_order_column_meta_field_sortable_orderby' );
function shop_order_column_meta_field_sortable_orderby( $query ) {
    global $pagenow;

    // Targeting WooCommerce admin orders list only
    if ( 'edit.php' === $pagenow && isset($_GET['post_type']) && 'shop_order' === $_GET['post_type'] ){

        $orderby  = $query->get( 'orderby');
        $meta_key = '_shipping_address_1';

        if ('_shipping_address_1' === $orderby){
          $query->set('meta_key', $meta_key);
          $query->set('orderby', 'meta_value_num'); // Or using 'meta_value'
        }
    }
}

代码放在活动子主题(或活动主题)的functions.php文件中。测试和作品。

相关问题