Я использую Расширенные пользовательские поля в магазине 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
}
}