情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・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>';
のように書いてもいいと思う。