如何在电子邮件中回显 Woocommerce 货运跟踪 URL?

How to echo Woocommerce shipment tracking URL in email?

我已经在这里找到了这个主题: 这是有效的,但在我的例子中,我想显示跟踪 link 而不是跟踪号码。我们想在特定位置显示此信息。插件代码向我展示了这个:

<a href="<?php echo esc_url( $tracking_item['formatted_tracking_link'] ); ?>" target="_blank"><?php _e( 'Track', 'woocommerce-shipment-tracking' ); ?></a>

在插件的文档中说,我可以使用密钥 tracking_link

访问数据

https://docs.woocommerce.com/document/shipment-tracking/#section-9

然后我尝试用它访问数据..但它总是空的..但是信息在那里..因为当我使用 tracking_number 而不是 tracking_link 时我得到了正确的订单跟踪号。

更新: 根据新信息,我必须在这里做一个解决方法,因为“tracking_link”值为空。

// Test - Output tracking code - 3
$tracking_items = $order->get_meta('_wc_shipment_tracking_items');

if( ! empty($tracking_items) ) { 
    foreach ( $tracking_items as $data ){
        echo '<a href="https://www.post.ch/swisspost-tracking?formattedParcelCodes='.<?php echo esc_url( $data['tracking_number'] ); ?> . '" target="_blank">'. sprintf( __('Track (number %s)', 'woocommerce-shipment-tracking' ), $data['tracking_number'] ) .'</a>';
        print_r($data);
            }
        }

更新: 不要使用订单号……最好使用定义的 WC_Order 对象,例如:

$tracking_items = $order->get_meta('_wc_shipment_tracking_items');

或使用订单 ID (来自定义的 WC_Order 对象) 如:

$tracking_items =  get_post_meta( $order->get_id(), '_wc_shipment_tracking_items', true );

所以根据Shipment Tracking documentation提供的link,试试:

$tracking_items = $order->get_meta('_wc_shipment_tracking_items');

if( ! empty($tracking_items) ) { 
    foreach ( $tracking_items as $data ){
        echo '<a href="https://www.post.ch/swisspost-tracking?formattedParcelCodes='. esc_url( $data['tracking_number'] ) . '" target="_blank">'. sprintf( __('Track (number %s)', 'woocommerce-shipment-tracking' ), $data['tracking_number'] ) .'</a>';
        // print_r($data); // For testing
    }
}