确定 WooCommerce 管理员订单列表中自定义列的顺序

Determine the sequence of custom column in WooCommerce admin orders list

我在 WooCommerce 管理员订单列表中添加了一个新的自定义列:

add_filter( 'manage_edit-shop_order_columns', 'custom_woo_columns_function' );
function custom_woo_columns_function( $columns ) {
    $new_columns = ( is_array( $columns ) ) ? $columns : array();
    

    // all of your columns will be added before the actions column
    $new_columns['storecode'] = '門市代碼';

    //stop editing
    
    return $new_columns;
}
// Change order of columns (working)
add_action( 'manage_shop_order_posts_custom_column', 'custom_woo_admin_value', 2 );
function custom_woo_admin_value( $column ) {
     
     $order_id = get_post($order_id)->ID;
     $CVSStoreID = get_post_meta($order_id, '_shipping_CVSStoreID', true);
    
    if ( $column == 'storecode' ) {
        echo ( isset( $CVSStoreID ) ? $CVSStoreID : '' );
    }
}

如何将此列移到前面?

您当前的代码将在末尾添加自定义列,这是因为您将此列添加到现有 $columns 数组的末尾。

要更改此设置,您可以使用 array_slice,然后只需将 $number 变量调整到所需位置即可。

所以你得到:

// Display new column on WooCommerce admin orders list (header)
function filter_manage_edit_shop_order_columns( $columns ) {
    // Number (adapt to your needs)
    $number = 4;
    
    // Add new column after $number column
    return array_slice( $columns, 0, $number, true )
    + array( 'storecode' => __( '門市代碼', 'woocommerce' ) )
    + array_slice( $columns, $number, NULL, true );
}
add_filter( 'manage_edit-shop_order_columns', 'filter_manage_edit_shop_order_columns', 10, 1 );

// Display details in the new column on WooCommerce admin orders list (populate the column)
function action_manage_shop_order_posts_custom_column( $column, $post_id ) {    
    // Compare
    if ( $column == 'storecode' ) {
        // Get order
        $order = wc_get_order( $post_id );
    
        // Get meta
        $value = $order->get_meta( '_shipping_CVSStoreID' );
        
        // NOT empty
        if ( ! empty ( $value ) ) {
            echo ucfirst( $value );
        } else {
            echo __( 'N/A', 'woocommerce' );
        }
    }
}
add_action( 'manage_shop_order_posts_custom_column' , 'action_manage_shop_order_posts_custom_column', 10, 2 );