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

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

Тема в разделе "Вопросы, советы и доработки.", создана пользователем Ria, 28 сен 2016.

  1. Ria

    Ria

    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    6
    Прошу Вашей помощи снова) Нужно в 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 бла бла бла бла и Тут оно появилось; ?>
     
  2. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    А если в заказе несколько товаров, то их все в одну и ту же ячейку выводить?
     
  3. Ria

    Ria

    Сообщения:
    52
    Симпатии:
    0
    Баллы:
    6
    У меня в заказах только один товар может быть :)
     
  4. Ria

    Ria

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

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    553
    Баллы:
    113
    Решение на примере темы 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>';
        }
    }
    В результате добавлена колонка "Товары" (см.скриншот).
    Возможно вывод придется поправить стилями.
     
    Последнее редактирование: 29 сен 2016
    • Согласен Согласен x 1