Я просто вот что не могу понять:Это механизм произвольных полей для постов Wordpress (товары, заказы - это разные типы постов).
Выводить можно в любых шаблонах с помощью функции get_post_meta().
Примеры приводились на форуме, н-р, в теме . Там речь про товары, но суть одна и та же, т.е. вместо ID товара (ID поста) можно подставить ID заказа (ID поста) и получить произвольное поля заказа.
<?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 ); ?>
<?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( '× %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().Я просто вот что не могу понять:
смотрим файл 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( '× %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(). ?
Ага, я уже так и понял, но не разберусь, вот к примеру хочу вставить поле в orders.phpДополнительные поля нужно выводить самому в нужном месте шаблона через get_post_meta().
<?php echo get_post_meta($order->id, 'key', true); ?>