确定 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 );
我在 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 );