Home >Backend Development >PHP Tutorial >How Can I Add Custom Columns to My WooCommerce Admin Order List?

How Can I Add Custom Columns to My WooCommerce Admin Order List?

Susan Sarandon
Susan SarandonOriginal
2024-11-21 01:59:13781browse

How Can I Add Custom Columns to My WooCommerce Admin Order List?

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn