Расширенное настраиваемое поле Wordpress - номер отслеживания на странице заказа - PullRequest
0 голосов
/ 21 ноября 2018

Я использую ACF для отправки номера отслеживания своим клиентам.Я создал поле, где вручную добавляю номер для отслеживания и отправляю сообщение клиенту по электронной почте о завершении заказа.Вот код:

//add tracking number for UPS into confirmation page
add_action ('woocommerce_email_before_order_table', 'acf_trackingnumberups', 20);


    function acf_trackingnumberups( $order ) {

    if (get_field('trackingnumberups', $order->get_id())) { // Only show if field is filled

?>
        <h3>Your tracking number: <strong><?php the_field('trackingnumberups', $order->get_id()); ?></strong></h3>
        <p>You may track your order with the number above, here: <a style="color: #0073aa;" href="https://www.ups.com/tracking/tracking.html">UPS Tracking</a> </p>         
        <?php 

    }

}

У нас проблема с потоком.

Я хочу иметь возможность: 1) добавить код отслеживания, 2) установить порядок выполнения и 3) обновить.

Теперь мне нужно 1) добавить код отслеживания, 2)обновить, 3) установить порядок для завершения и 4) обновить снова.

Иначе, пользовательское поле не будет выбрано в электронном письме о завершении заказа.

Я попытался удалить эту строку:

if (get_field('trackingnumberups', $order->get_id())) { // Only show if field is filled 

Это сработало, но оно включает код отслеживания во всех уведомлениях.

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

Есть ли способ сохранить страницу с помощью Ajax?

Вот плагин: https://github.com/SnakeO/acf-admin-button-field

1 Ответ

0 голосов
/ 26 ноября 2018

Я нашел решение.

Я забыл сохранить значения, зарегистрированные в настраиваемом поле, перед добавлением информации в электронное письмо с заказом.Не нужно добавлять кнопку Ajax под полем.Также плагин больше не поддерживается.

    // save input from metabox
add_action( 'save_post', 'bdev_save_postnord_data_to_order', 10, 1 );
if ( ! function_exists( 'bdev_save_postnord_data_to_order' ) )
{

    function bdev_save_postnord_data_to_order( $post_id ) {

        if ( ! isset( $_POST[ 'postnord_meta_field_nonce' ] ) ) {
            return $post_id;
        }
        $nonce = $_REQUEST[ 'postnord_meta_field_nonce' ];

        if ( ! wp_verify_nonce( $nonce ) ) {
            return $post_id;
        }

        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
            return $post_id;
        }

        if ( 'page' == $_POST[ 'post_type' ] ) {

            if ( ! current_user_can( 'edit_page', $post_id ) ) {
                return $post_id;
            }
        } else {

            if ( ! current_user_can( 'edit_post', $post_id ) ) {
                return $post_id;
            }
        }
        update_post_meta( $post_id, '_postnord_field_data', $_POST[ 'postnord_data_name' ] );
    }
}
...