我有這個功能,可以將自訂元欄位新增到所有 WooCommerce 電子郵件中的產品詳細資訊中。但我只需要在訂單付款後顯示(這也可以只是「已完成」電子郵件)。
add_action( 'woocommerce_order_item_meta_start', 'email_confirmation_display_order_items', 10, 3 ); function email_confirmation_display_order_items( $item_id, $item, $order ) { // On email notifications for line items if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) { $ot_address = get_post_meta( $item->get_product_id(), 'ot_address', true ); if ( ! empty($ot_address) ) { printf( '<div>' . __("Terms: %s", "woocommerce") . '</div>', $ot_address ); } } }
我希望可以將它嵌套在 if ( $email->id == 'customer_completed_order' ) {}
內,所以最終的程式碼將如下所示:
add_action( 'woocommerce_order_item_meta_start', 'email_confirmation_display_order_items', 10, 3 ); function email_confirmation_display_order_items( $item_id, $item, $order ) { if ( $email->id == 'customer_completed_order' ) { // On email notifications for line items if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) { $ot_address = get_post_meta( $item->get_product_id(), 'ot_address', true ); if ( ! empty($ot_address) ) { printf( '<div>' . __("Terms: %s", "woocommerce") . '</div>', $ot_address ); } } } }
但在更改後它就停止工作了。有什麼建議嗎?
如您在程式碼嘗試中看到的,
$email
不是woocommerce_order_item_meta_start
掛鉤的一部分。因此,要定位某些 WooCommerce 電子郵件通知,您需要解決方法。步驟 1) 透過另一個僅適用於 WooCommerce 電子郵件通知的鉤子建立並新增全域變數。
步驟 2) 在掛鉤
woocommerce_order_item_meta_start
中,使用全域變量,以便我們可以定位某些 WooCommerce 電子郵件通知