Детали заказа Woocommerce не загружаются должным образом - PullRequest
1 голос
/ 30 октября 2019

Я использую плагин WooCommerce Print Invoices & Packing Lists. Я хочу добавить некоторые значения настраиваемых полей в накладной заказа. Но поля загружаются неправильно.

add_action('wc_pip_after_body', 'dvsi_invoice_footer');
function dvsi_invoice_footer ($order_id) {

    $order = new WC_Order( $order_id );

    echo '<h4>'.__('Name: ').'</strong> ' . $order->billing_first_name . '</h4>';
    echo '<h4>'.__('Note: ').'</strong> ' . get_post_meta( $order->id, 'public_details_new', true ) . '</h4>';

    ?>
    <h4 style="margin-bottom:0px;">Important:</h4>
    <p>If you have purchased Domain, Hosting, SSL certificate or any other service that has an Expiry date then please contact us 10 days before prior to the Expiry date so we can renew or repurchase it on time.<p>                      
    <h4 style="margin-bottom:0px;">Contact Details</h4>
    <p><strong>Office: </strong>AL-Hafeez Heights Gulberg III, Lahore<p>
    <p><strong>Mobile: </strong>0323-4152099<p>
    <p><strong>Email: </strong>contact@devsol.pk<p>
    <?php   
}

Выходные данные не загружают значения моего настраиваемого поля и отображаются пустыми. Он загружает только значения html.

Вот ссылка на список доступных подключаемых модулей: https://docs.woocommerce.com/document/woocommerce-print-invoices-packing-lists-developer-reference/#section-1

Любая помощь, пожалуйста?

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Для wc_pip_after_body хука нет аргумента $order_id, но доступны следующие аргументы: $type, $action, $document и $order.

Таким образом, вы можете использовать его таким образом в своем коде (при условии, что public_details_new пользовательское поле закрывается) :

add_action('wc_pip_after_body', 'dvsi_invoice_footer', 90, 4 );
function dvsi_invoice_footer ( $type, $action, $document, $order ) {

    echo '<h4>'.__('Name: ').'</strong> ' . $order->get_billing_first_name() . '</h4>';
    echo '<h4>'.__('Note: ').'</strong> ' . $order->get_meta( 'public_details_new' ) . '</h4>';

    echo '<h4 style="margin-bottom:0px;">'.__('Important: ').'</h4>
    <p>'.__('If you have purchased Domain, Hosting, SSL certificate or any other service that has an Expiry date then please contact us 10 days before prior to the Expiry date so we can renew or repurchase it on time.').'<p>'; 

    echo '<h4 style="margin-bottom:0px;">'.__('Contact Details: ').'</h4>
    <p><strong>Office: </strong>'.__('AL-Hafeez Heights Gulberg III, Lahore').'<p>
    <p><strong>Mobile: </strong>'.__('0323-4152099').'<p>
    <p><strong>Email: </strong>'.__('contact@devsol.pk').'<p>'; 
}

Это должно работать лучше.

Примечание: Как сказал @helgatheviking WC_Order Свойства объекта более недоступны со времен Woocommerce 3, и вам нужно использовать соответствующие доступные методы .

1 голос
/ 30 октября 2019

Не уверен, что это решит проблему, но нужно использовать геттеры WooCommerce CRUD.

$order = new WC_Order( $order_id );
echo '<h4>'.__('Name: ').'</strong> ' . $order->get_billing_first_name() . '</h4>';
echo '<h4>'.__('Note: ').'</strong> ' . $order->get_meta( 'public_details_new', true ) . '</h4>';

Прямой доступ к свойствам объекта уже устарел в течение нескольких лет и, по крайней мере, вызывает много предупреждений. .

Возможно, вам также понадобится проверить, правильно ли сохраняются ваши собственные мета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...