#php #wordpress #woocommerce #metadata #orders
Вопрос:
Я хочу добавить пользовательские мета-данные после данных заказа в PDF-счетах и упаковочных накладных WooCommerce. Если пользовательское поле присутствует в заказе WooCommerce,
В моем коде мое пользовательское имя поля wholesale_order
.
Для этого я использую:
add_action( 'wpo_wcpdf_after_order_data', 'add_due_date', 10, 2 );
function add_due_date() {
$order_data = get_post_meta( $post->ID, 'wholesale_order', true );
if( $order_data ) {
// Do stuff
}
}
К сожалению, без желаемого результата, я думаю $post->ID
, что это неверно и, вероятно get_post_meta
, так .
Что я упускаю?
Комментарии:
1. Быстрый поиск в Google не показывает никаких результатов
add_woo_order_data
; вы уверены, что это правильный крючок?2. Крючок, который я на самом деле использую
wpo_wcpdf_after_order_data
, взят из плагина PDF-счета docs.wpovernight.com/woocommerce-pdf-invoices-packing-slips/…3. Настоящее имя крючка обновляется в коде
Ответ №1:
Первая попытка:
function action_wpo_wcpdf_after_order_data( $template_type, $order ) {
// Get meta
$wholesale_order = $order->get_meta( 'wholesale_order' );
echo $wholesale_order;
}
add_action( 'wpo_wcpdf_after_order_data', 'action_wpo_wcpdf_after_order_data', 10, 2 );
Если это сработает, вы можете расширить свой код до чего-то вроде:
function action_wpo_wcpdf_after_order_data( $template_type, $order ) {
// Get meta
$wholesale_order = $order->get_meta( 'wholesale_order' );
// NOT empty
if ( ! empty ( $wholesale_order ) ) {
?>
<tr class="my-class>
<th><?php __( 'My title', 'woocommerce' ); ?></th>
<td>
<?php echo $wholesale_order; ?>
</td>
</tr>
<?php
}
}
add_action( 'wpo_wcpdf_after_order_data', 'action_wpo_wcpdf_after_order_data', 10, 2 );
Крючок действия:
wpo_wcpdf_after_order_data
имеет 2 аргумента$template_type
amp;$order
.- После данных заказа — обратите внимание, что это находится внутри таблицы, и вы должны вывести данные в виде строки/ячеек таблицы html.
Ответ №2:
Объявите global $post
перед $order_data
переменной.
Комментарии:
1. Я пробовал также с
global $post
, но не работает