WooCommerce 的 Email 模版中除了 header 和 footer 模版之外,都可以獲取 order 資訊進而取得使用者資訊,若要在 header 和 footer 裡輸出一些使用者相關的資訊,有點麻煩。

目前找到的方式是這樣,在 email-header.php 裡,透過遍歷 mailer 變數找到哪個 email 的被賦予 order 資訊,被賦值說明正在傳送這個 email, 透過這個 order 資訊來獲取使用者 ID

if( is_object( WC()->mailer ) ){
	foreach( WC()->mailer->emails as $key => $email ){
		if( is_object( $email->object ) ){
			$order_id = $email->object->id;
			break;
		}
	}
}
if( isset( $order_id ) && is_numeric( $order_id ) ){
    $order = new WC_Order( $order_id );
    $customer_id = $order->user_id;//使用者 user_id
}

模版透過 wc_get_template 呼叫,其它的模版都傳了 $order 進去,只有 footer 和 header 是例外,而 WC_Email class 也沒給插一腿的機會,只好這麼幹。