首页 > 解决方案 > Wordpress 高级自定义字段 - 在订单页面中包含跟踪号

问题描述

我使用 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

标签: wordpressfieldadvanced-custom-fieldscustom-fields

解决方案


我找到了解决方案。

在将信息添加到订单电子邮件之前,我忘记保存从自定义字段注册的值。无需在字段下添加 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' ] );
    }
}

推荐阅读