На экране «Таблица заказов администратора» бэкэнда WooCommerce я создал новый столбец для отображения информации.Данные, которые я хотел бы отобразить, представляют собой метаданные каждого элемента в заказе.
Во время процесса заказа для продукта записываются дополнительные метаданные, которые сохраняются в заказе (перейдя в WooCommerce>Заказ> Изменить идентификатор заказа). Это данные, которые я хотел бы получить и вернуть: https://d.pr/free/i/HZzEam
Когда я проверяю эту область, это содержимое таблицы display_meta
, которое я хотел бы скопировать и добавить встолбец: https://d.pr/free/i/oGsngJ
Копая файлы WooCommerce, я вижу это область, где создается эта таблица :
$hidden_order_itemmeta = apply_filters(
'woocommerce_hidden_order_itemmeta', array(
'_qty',
'_tax_class',
'_product_id',
'_variation_id',
'_line_subtotal',
'_line_subtotal_tax',
'_line_total',
'_line_tax',
'method_id',
'cost',
)
);
?><div class="view">
<?php if ( $meta_data = $item->get_formatted_meta_data( '' ) ) : ?>
<table cellspacing="0" class="display_meta">
<?php
foreach ( $meta_data as $meta_id => $meta ) :
if ( in_array( $meta->key, $hidden_order_itemmeta, true ) ) {
continue;
}
?>
<tr>
<th><?php echo wp_kses_post( $meta->display_key ); ?>:</th>
<td><?php echo wp_kses_post( force_balance_tags( $meta->display_value ) ); ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php endif; ?>
</div>
Я понимаю, что этомного информации, которую нужно добавить в один столбец, но сейчас мне нужно это сделать.
Подобно тому, как WooCommerce отображает эту информацию в области «Редактирование заказа», как мне также отображать мета этого элемента заказа в моемcolumn?
Я использую некоторые фрагменты PHP (хук) для создания нового столбца, используя доступное действие из плагина Admin Columns Pro.По сути, это позволило мне добавить столбец существующего настраиваемого поля, а затем переопределить его с любыми данными, которые я хочу.Это текущий код, который у меня есть:
<?php
/**
* Display custom Event Registration details (item meta data from the order) (which are captured via WooCommerce Add-ons form/fields) on the ORDER LIST/TABLE SCREEN via overriding Admin Columns Pro field column
*
* Filter the display value for a column
*
* @param mixed $value Custom field value
* @param int $id Object ID
* @param AC_Column $column Column instance
*/
function fs_custom_event_registration_details_column_value( $value, $id, $column ) {
if ( $column instanceof AC_Column_CustomField ) {
$order = wc_get_order( $id );
//$order_items = $order->get_items();
// get the meta key of this column
$meta_key = $column->get_meta_key();
// we've added the WooCommerceEventsTicketsPurchased as a custom column via Admin Columns plugin, and now are targetting that one to override it with different data
if ( 'WooCommerceEventsTicketsPurchased' == $meta_key ) {
$value = 'testing<br>';
// example of replacing column field value with a value from a different field
// $billingphone = get_post_meta( $id, '_billing_phone', true );
// $value .= sprintf( '<span>'. $billingphone .'</span><br>', $value );
foreach ( $order->get_items() as $item_id => $item ) {
$product_name = $item->get_name();
//$product_id = $item->get_product_id();
//$product_variation_id = $item->get_variation_id();
$product_id = $item['product_id'];
$value .= $product_name;
}
}
}
// show me the results
return $value;
}
add_filter( 'ac/column/value', 'fs_custom_event_registration_details_column_value', 10, 3 );
Но, очевидно, это только захват названия продуктов в заказе.Мне нужно получить метаданные заказа для каждого элемента в заказе.
Это не обязательно должно быть в таблице.Маркированный список или даже запятая должны быть в порядке.
Также, если возможно, я хочу выводить только мета товара для продукта в категории «События».