• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Решено Заказы (orders.php) - Как вывести название товара?

Ria

Форумчанин
Прошу Вашей помощи снова) Нужно в orders.php (на странице Заказы) в таблице вывести в ячейке название товара. Как его правильно выдернуть?
Захожу на страницу "просмотр заказа" (orders-details.php) и смотрим код:
Код:
<?php
            foreach( $order->get_items() as $item_id => $item ) {
                $product = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );

                wc_get_template( 'order/order-details-item.php', array(
                    'order'                 => $order,
                    'item_id'             => $item_id,
                    'item'                 => $item,
                    'show_purchase_note' => $show_purchase_note,
                    'purchase_note'         => $product ? get_post_meta( $product->id, '_purchase_note', true ) : '',
                    'product'             => $product,
                ) );
            }
        ?>
        <?php do_action( 'woocommerce_order_items_table', $order ); ?>
Далее идем в order-details-item.php:
Код:
<?php
            $is_visible        = $product && $product->is_visible();
            $product_permalink = apply_filters( 'woocommerce_order_item_permalink', $is_visible ? $product->get_permalink( $item ) : '', $item, $order );

            echo apply_filters( 'woocommerce_order_item_name', $product_permalink ? sprintf( '<a href="%s">%s</a>', $product_permalink, $item['name'] ) : $item['name'], $item, $is_visible );
            echo apply_filters( 'woocommerce_order_item_quantity_html', ' <strong class="product-quantity">' . sprintf( '&times; %s', $item['qty'] ) . '</strong>', $item );

            do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order );

            $order->display_item_meta( $item );
            $order->display_item_downloads( $item );

            do_action( 'woocommerce_order_item_meta_end', $item_id, $item, $order );
        ?>

В итоге в деталях заказа (просмотр заказа) видим следующую таблицу в ячейке которой есть:

"Название товара как ссылка на него же" * 1 (это указано количество itemcount)

Подскажите пожалуйста, как правильно это "Название товара как ссылка на него же" перенести в orders.php (в любую из ячеек к примеру, да даже без разници куда)что я уже только не пробовал....:( (n) как же мне получить это все по примеру:
<?php echo бла бла бла бла и Тут оно появилось; ?>
 

searchingman

Гуру
Местный
А если в заказе несколько товаров, то их все в одну и ту же ячейку выводить?
 

Ria

Форумчанин
Подскажите пожалуйста, как это можно сделать самым удобным способом? А то у меня получилось одним вариантом - но там кода на пол страници:( У меня на сайте просто есть добавление только одного товара и в количество - только 1 шт.
 

searchingman

Гуру
Местный
Решение на примере темы Storefront.
Вставить код в functions.php темы
PHP:
// WC 2.6.4: Добавить новую колонку с товарами на странице заказов в личном кобинете
//1. Добавляем колонку после колонки с суммой заказа
add_filter( 'woocommerce_account_orders_columns', 'my_column_product');
function my_column_product($columns) {
    $new_columns = array();
    foreach ($columns as $key => $value) {
        $new_columns[$key] = $value;
        if ($key == 'order-total' ) $new_columns['order-products'] = "Товары";
    }
    return $new_columns;
}
// 2. Заполняем колонку "Товары"
add_action( 'woocommerce_my_account_my_orders_column_order-products', 'get_column_order_product');
function get_column_order_product($order) {
    foreach( $order->get_items() as $item_id => $item ) {
        $product = $order->get_product_from_item( $item );
        $product_permalink = $product->get_permalink( $item );
        echo sprintf( '<a href="%s">%s</a>', $product_permalink, $item['name'] );
        echo ' <strong class="product-quantity">' . sprintf( '&times; %s', $item['qty'] ) . '</strong>';
    }
}
В результате добавлена колонка "Товары" (см.скриншот).
Возможно вывод придется поправить стилями.
 
Последнее редактирование:
Сверху Снизу