近期在串接金流時為了要將 ATM 的虛擬帳號可以寄送給顧客,因此使用勾點 woocommerce_email_order_meta
將帳號資訊寫入,結果不知道為何管理員跟顧客收到的第一封信,輸出的內容都會多重複一筆:
由於我是把勾點放在 Payment Gateway 的類別裡面執行,不知道是不是哪邊重複呼叫到還是有其他原因,最後我的解法是用 CSS 把第二個轉帳資訊的地方隱藏,但更詭異的是當我寫了 <style>
後第二個 div 就沒出現了…
add_action(
'woocommerce_email_order_meta',
function() {
$html = '
<style>.account-info+.account-info{display:none}</style>
<div style="margin-bottom:40px" class="account-info">
<h2 class="woocommerce-order-details__title">轉帳資訊</h2>
</div>
';
echo $html;
}
)
後來小程跟我說官方文件有提醒不要把勾點放在 Payment Gateway 的類別來執行,不然很有可能不會觸發到,文件翻譯如下:「在 Gateway 類別內部加入勾點可能不會觸發。Gateway 只會在需要時載入,例如在結帳過程以及在設定頁面內。如果您需要從類別中加入 WordPress 事件,應將勾點放在類別之外或使用 WC-API。」