Kolumna z produktami w widoku zamówień
Woocommerce w wersji powyżej 3.0 zmodyfikowano sposób wyświetlania zamówień. Zniknęła z ogólnego widoku kolumna pokazująca ilość zamówionych produktów, która dla większości osób obsługujących sklep była bardzo przydatną informacją. W dość prosty sposób możemy przywrócić ten stan rzeczy. Wykorzystamy do tego filtr 'manage_edit-shop_order_columns’ oraz akcję 'manage_shop_order_posts_custom_column’.
Najpierw zrobimy sobie miejsce w tabeli zamówień czyli stworzymy dodatkową kolumnę:
add_filter('manage_edit-shop_order_columns', 'kolumna_zamowionych_produktow'); function kolumna_zamowionych_produktow($columns) { $tablica_kolumn = array(); foreach ($columns as $key => $title) { if ($key == 'billing_address') { $tablica_kolumn['order_items'] = 'Produkty'; } $tablica_kolumn[$key] = $title; } return $tablica_kolumn; }
Teraz musimy wstawić w komórki naszej nowej kolumny interesującą nas zawartość:
add_action('manage_shop_order_posts_custom_column', 'wc_shop_custom_column', 10, 2); function wc_shop_custom_column($column) { global $post, $woocommerce, $the_order; switch ($column) { case 'order_items': $terms = $the_order->get_items(); echo '<a href="#" class="show_order_items">' . apply_filters( 'woocommerce_admin_order_item_count', sprintf( _n( '%d item', '%d items', $the_order->get_item_count(), 'woocommerce' ), $the_order->get_item_count() ), $the_order ) . '</a>'; if ( sizeof( $the_order->get_items() ) > 0 ) { echo '<table class="order_items" cellspacing="0">'; foreach ( $the_order->get_items() as $item ) { $product = apply_filters( 'woocommerce_order_item_product', $item->get_product(), $item ); $item_meta = (WC()->version < '3.1.0') ? new WC_Order_Item_Meta($item) : new WC_Order_Item_Product; $item_meta_html = (WC()->version < '3.1.0') ? $item_meta->display(true, true) : $item_meta->get_product(); //$item_meta = new WC_Order_Item_Meta( $item, $product ); //$item_meta_html = $item_meta->display( true, true ); ?> <tr class="<?php echo apply_filters( 'woocommerce_admin_order_item_class', '', $item, $the_order ); ?>"> <td class="qty"><?php echo esc_html( $item->get_quantity() ); ?></td> <td class="name"> <?php if ( $product ) : ?> <?php echo ( wc_product_sku_enabled() && $product->get_sku() ) ? $product->get_sku() . ' - ' : ''; ?><a href="<?php echo get_edit_post_link( $product->get_id() ); ?>"><?php echo apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ); ?></a> <?php else : ?> <?php echo apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ); ?> <?php endif; ?> <?php if ( ! empty( $item_meta_html ) ) : ?> <?php echo wc_help_tip( $item_meta_html ); ?> <?php endif; ?> </td> </tr> <?php } echo '</table>'; } else echo '–'; break; } }