首页 > 解决方案 > 第一次发送电子邮件时,如何让 PHP 包含表单值?(WordPress 管理员)

问题描述

我在 WooCommerce 商店中使用高级自定义字段,以允许我在填写这些值时填充并包括运输服务和跟踪号信息,将订单状态设置为“已完成”,然后点击更新。

但是,直到第二次,这些值才会在电子邮件模板中水合,因为我认为 post_meta 第一次不存在。有人可以帮我弄清楚如何立即得到它吗?

这是我的代码:

add_action( 'woocommerce_email_after_order_table', 
'woocommerce_email_after_order_table_func' );
 function woocommerce_email_after_order_table_func( $order ) {
 $ship = get_field($order->id, 'shipping_service', true);
 $track = get_field($order->id, 'tracking_number', true);


 $status = $order->get_status();
 $shippingService = get_post_meta($order->id, 'shipping_service', true);
 $trackingNumber = get_post_meta($order->id, 'tracking_number', true);
 $trackingURL = '';
 switch ($shippingService) {
    case "FedEx":
        $trackingURL = "http://www.fedex.com/Tracking?tracknumbers=";
        break;
    case "USPS":
        $trackingURL = "https://tools.usps.com/go/TrackConfirmAction?tLabels=";
        break;

}



if($status == "completed"){
    ?>

    <h3>Shipping Information:</h3>
    <table>
        <tr>
            <td>Tracking Number: </td>

            <td>
            <a href="<?php echo ($trackingURL . $trackingNumber) ?>">
                <?php echo $trackingNumber; ?>
            </a>
            </td>
            <td><?php echo $track; ?></td>


        </tr>
        <tr>
            <td>Shipping Service: </td>
            <td><?php echo $shippingService; ?></td>
            <td><?php echo $ship; ?></td>

        </tr>
    </table>
<?php 
    $trackingURL = NULL;
    } else { 
?>
    <h3>When we have your order shipped, we will send an email with that information.</h3>
<?php
    }   
}   

标签: phpwordpresswoocommerce

解决方案


推荐阅读