ウェブサイト検索

完了したメールに WooCommerce 注文メモを追加する


注文のステータスや、注文に関して役立つその他のデータに関する情報があることほど良いことはありません。デフォルトでは、WooCommerce は注文にリンクされたすべてのアクションをデータベースに保存します。この一連のアクションは、注文を編集するときに管理画面のサイドバーで実行できます。ただし、顧客はこのアクション リストにアクセスできません。良いニュースは、WooCommerce から送信されるメールに簡単に追加できることです。この投稿では、完全なメール (注文ステータスが完了としてマークされたときに送信されるメール) に注文メモを追加する方法を説明します。ただし、この方法を使用して、他のメールに注文メモを追加することもできます。

カスタム テンプレートまたはフック?

ちょっと注意してください: WooCommerce 内のすべてのメールはテンプレートを使用して提供されており、独自のテンプレートを作成することでデフォルトのテンプレートをオーバーライドできます。基本的に、カスタム テンプレートを使用すると、WooCommerce のデフォルト ファイルをオーバーライドし、代わりに独自のカスタム ファイルを使用できます。カスタム テンプレートの作成方法を説明する簡単なチュートリアルは次のとおりです: http://docs.woothemes.com/document/template- Structure/。

カスタム テンプレート内に注文メモを追加することもできますが、フックを使用する別の方法を紹介したいと思います。アイデアは、カスタム テンプレートを使用せず、テーマ フォルダー内の function.php ファイルのみを使用することです。

注文メモはWordPressのコメントです

注文メモは、特定のタイプ「order_note」を持つ WordPress コメントであるため、get_comments() 関数を使用してコメントに適用される WordPress WP_Query クラスを使用できます。

使用する必要があるフックは、「woocommerce_email_order_meta」というアクションです。このアクションが WooCommerce プロセスに読み込まれるときにカスタム関数を呼び出すという考え方です。

get_comments() を使用すると、注文メモを取得する方法が簡素化されます。必要なのは、投稿 ID とコメントを意味する「承認」コメント属性を使用して、特定の注文にリンクされたコメントをリストすることだけです。 (この場合は WooCommerce によって) 検証されます。

コード

テーマフォルダーのfunctions.phpファイル内に配置するコードは次のとおりです。

add_action( 'woocommerce_email_order_meta', 'woo_add_order_notes_to_email' );

function woo_add_order_notes_to_email() {

	global $woocommerce, $post;

	$args = array(
		'post_id' 	=> $post->ID,
		'approve' 	=> 'approve',
		'type' 		=> 'order_note'
	);

	$notes = get_comments( $args );
	
	echo '<h2>' . __( 'Order Notes', 'woocommerce' ) . '</h2>';

	echo '<ul class="order_notes">';

	if ( $notes ) {
		foreach( $notes as $note ) {
			$note_classes = get_comment_meta( $note->comment_ID, 'is_customer_note', true ) ? array( 'customer-note', 'note' ) : array( 'note' );

			?>
			<li rel="comment_ID ) ; ?>" class="">
				<div class="note_content">
					comment_content ) ) ); ?>
				</div>
				<p class="meta">
					comment_date_gmt ), current_time( 'timestamp', 1 ) ) ); ?>
				</p>
			</li>
			<?php
		}
	} else {
		echo '<li>' . __( 'There are no notes for this order yet.', 'woocommerce' ) . '</li>';
	}

	echo '</ul>';
}

ご覧のとおり、このコードは非常にシンプルで、複雑なものは何もないため、簡単にカスタマイズできます。 human_time_diff()、wptexturize()、wp_kses_post() などの優れた関数の使用に注意してください。

この投稿を楽しんでいただければ幸いです。以下のフォームにコメントを残してください。フィードバックをお待ちしています。