Add Custom Columns to WooCommerce Admin Order List
In WooCommerce, you can customize the admin order listing page to include additional columns that display relevant information about your orders.
Adding Columns to Order List
To add custom columns to the order list in WooCommerce, you'll need to modify the template file:
/wp-content/plugins/woocommerce/includes/admin/views/html-order-list.php
Inside the manage_shop_order_posts_custom_column function, you can define the content of your custom columns based on the $column parameter. For example, to add a column displaying the order weight, you could use the following code:
case 'weight': $order = wc_get_order($post_id); $weight = $order->get_weight(); echo $weight . ' kg'; break;
Adding Columns to Specific Location
You can specify the position of your custom columns by modifying the manage_edit-shop_order_columns filter. This filter allows you to reorder the existing columns and insert your custom columns in a specific location.
For example, to insert a custom column named "My Column" before the "Actions" column, you would use the following code:
add_filter('manage_edit-shop_order_columns', 'reorder_admin_order_columns'); function reorder_admin_order_columns($columns) { $reordered_columns = array(); foreach ($columns as $key => $column) { $reordered_columns[$key] = $column; if ($key == 'order_status') { $reordered_columns['my-column'] = 'My Column'; } } return $reordered_columns; }
High-Performance Order Storage (HPOS)
From WooCommerce 8.2, High-Performance Order Storage (HPOS) is enabled by default for new installations. This requires a slightly different approach to adding custom columns:
add_filter('manage_woocommerce_page_wc-orders_columns', 'reorder_admin_order_hpos_columns'); function reorder_admin_order_hpos_columns($columns) { $reordered_columns = array(); foreach ($columns as $key => $column) { $reordered_columns[$key] = $column; if ($key == 'order_status') { $reordered_columns['my-column'] = 'My Column'; } } return $reordered_columns; } add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_admin_order_hpos_column_content', 10, 2); function display_admin_order_hpos_column_content($column, $order) { switch ($column) { case 'my-column': // Get custom order metadata $value = $order->get_meta('_the_meta_key'); if (!empty($value)) { echo $value; } else { echo '<small>(<em>no value</em>)</small>'; } break; } }
These code changes allow you to add custom columns to the admin order listing page, providing you with additional insights and flexibility in managing your orders.
The above is the detailed content of How Can I Add Custom Columns to My WooCommerce Admin Order List?. For more information, please follow other related articles on the PHP Chinese website!