Woocommerce 完了メールに追加

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

Woocommerce で完了メールに配送情報を入れたいということで、追加したカスタムフィールドをメールに追加する方法。

add_filter('woocommerce_email_order_meta_keys', 'my_custom_order_meta_keys');
function my_custom_order_meta_keys( $keys ) { if (get_field('配送詳細')) {
  $keys[] = '配送詳細';
  return $keys; }
}

完了メールだけに追加する方法が見つからなかったので、入力があるかどうかの分岐を付けてます。
複数の場合、

add_filter( 'woocommerce_email_order_meta_fields', 'my_custom_order_meta_keys', 10, 3 );
function my_custom_order_meta_keys( $fields, $sent_to_admin, $order ) { if (get_field('addinfo')) { 
	$fields['field1'] = array(
		'label' => __( '【Field1】' ),
		'value' => get_field('field1'),
        );
	$fields['field2'] = array(
		'label' => __( '【Field2】' ),
		'value' => get_field('field2'),
        );
	$fields['field3'] = array(
		'label' => __( '【Field3】' ),
		'value' => get_field('field3'),
        );
    return $fields;
} }

こちらは情報を追加するかどうかのチェックボックスでの分岐。
*入力・完了を選択・更新の順だと、入力内容が保存される前にメールが送信されるようなので、一旦保存(更新)してから完了に。

完了メールテンプレートをコピーしてdo_action( ‘woocommerce_email_order_meta’, $order, $sent_to_admin, $plain_text, $email ); の下に

echo '<p>項目名1:'.get_field('field1').'</p><p>項目名2:'.get_field('field2').'</p>';

のように書いてもいいと思う。