Добавьте пользовательские мета — данные после данных заказа в PDF-счетах WooCommerce и упаковочных накладных

#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 , но не работает