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 也没给插一腿的机会,只好这么干。