skip to Main Content

I´m using Woocommerce with paid addon from automatic "product addon" which adds some meta values to the order item table

I want to show 2 or more specific meta key values in the admin order list.

  • 1 Funghi
    Topup: Salami
    Oil: chilli

I got the quantity and product name working with this code but not the order item meta,
any ideas?

add_action('manage_shop_order_posts_custom_column', 'orders_list_preview_items', 20, 2 );
function orders_list_preview_items($column, $post_id) {
    
    global $the_order, $post;
    
    if ('order_status' === $column) {
        
        // Start list
        echo '<ul class="orders-list-items-preview">';
        
        // Loop through order items
        foreach($the_order->get_items() as $item) {
            
            $product = $item->get_product();
         
            
            $name    = $item->get_name();
            $qty     = $item->get_quantity();
        $meta    = $item->get_meta();
            
            echo "<li>
                
               <label>$qty</label> $name $meta
            </li>";
        }
        
        // End list
        echo '</ul>';
    }
    
    
}

2

Answers


  1. Chosen as BEST ANSWER
    'add_action('manage_shop_order_posts_custom_column', orders_list_preview_items', 20, 2);
    

    function orders_list_preview_items($column, $post_id) { global $the_order, $post;

    if ('order_status' === $column) {
        // Start list
        echo '<ul class="orders-list-items-preview">';
    
        // Loop through order items
        foreach ($the_order->get_items() as $item) {
            $product = $item->get_product();
            $name = $item->get_name();
            $qty = $item->get_quantity();
            $meta = $item->get_meta_data(); // Use get_meta_data() to retrieve item meta data
    
            echo "<li><label>$qty</label> $name ";
    
            // Display Topup and Oil meta values
            foreach ($meta as $meta_item) {
                if ($meta_item->key === 'Topup') {
                    echo "<span style='color: green; line-height: 1.5;'>{$meta_item->value}</span> ";
                }
                if ($meta_item->key === 'Oil') {
                    echo "<span style='color: brown; line-height: 1.5;'>{$meta_item->value}</span>";
                }
            }
    
            echo "</li>";
        }
    
        // End list
        echo '</ul>';
    }
    

    } code works ;-)


  2. You can Loop through the item’s metadata. and check for only the meta keys that you want to display. check the below code.

    add_action('manage_shop_order_posts_custom_column', 'orders_list_preview_items', 20, 2);
    function orders_list_preview_items($column, $post_id){
        global $the_order, $post;
    
        if ('order_status' === $column) {
            // Start list
            echo '<ul class="orders-list-items-preview">';
    
            // Loop through order items
            foreach ($the_order->get_items() as $item) {
                $product = $item->get_product();
    
                $name = $item->get_name();
                $qty = $item->get_quantity();
                $meta = $item->get_meta();
    
                echo "<li>
                    <label>$qty</label> $name";
    
                // Loop through the item's meta data
                foreach ($meta as $meta_key => $meta_value) {
                    // Display specific meta key values
                    if (in_array($meta_key, ['Funghi Topup', 'Salami Oil', 'chilli'])) {
                        echo "<br>$meta_key: $meta_value";
                    }
                }
    
                echo "</li>";
            }
    
            // End list
            echo '</ul>';
        }
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search