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

Решено Добавить заказ из админки - Произвольные поля

Image CMS

Ria

Форумчанин
#1
Здравствуйте, при добавлении заказа из админки, есть блок "Произвольные поля"

Подскажите пожалуйста, а где они должны выводиться? Что-то я не могу с ними разобраться, что это именно такое?
 
Последнее редактирование:

searchingman

Гуру
Местный
#2
Это механизм произвольных полей для постов Wordpress (товары, заказы - это разные типы постов).
Выводить можно в любых шаблонах с помощью функции get_post_meta().
Примеры приводились на форуме, н-р, в теме . Там речь про товары, но суть одна и та же, т.е. вместо ID товара (ID поста) можно подставить ID заказа (ID поста) и получить произвольное поля заказа.
 

Ria

Форумчанин
#3
Это механизм произвольных полей для постов Wordpress (товары, заказы - это разные типы постов).
Выводить можно в любых шаблонах с помощью функции get_post_meta().
Примеры приводились на форуме, н-р, в теме . Там речь про товары, но суть одна и та же, т.е. вместо ID товара (ID поста) можно подставить ID заказа (ID поста) и получить произвольное поля заказа.
Я просто вот что не могу понять:
смотрим файл order-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 );
        ?>
Я так понимаю что все правильно должно быть, но я не вижу этих полей в карточке заказа и т.п. Может я что не так понял и отдельно нужно их добавить еще через get_post_meta(). ?
 

searchingman

Гуру
Местный
#4
Я просто вот что не могу понять:
смотрим файл order-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 );
        ?>
Я так понимаю что все правильно должно быть, но я не вижу этих полей в карточке заказа и т.п. Может я что не так понял и отдельно нужно их добавить еще через get_post_meta(). ?
Дополнительные поля нужно выводить самому в нужном месте шаблона через get_post_meta().
 

Ria

Форумчанин
#5
Дополнительные поля нужно выводить самому в нужном месте шаблона через get_post_meta().
Ага, я уже так и понял, но не разберусь, вот к примеру хочу вставить поле в orders.php
В ячейку таблици добавлять как уже только не пробовал:
Код:
<?php echo get_post_meta($order->id, 'key', true); ?>
и т.п. Может я вообще не в ту сторону смотрю? Как его правильно указать что вывести доп поля нужно именно с этого ордера?
 
Сверху Снизу