완성된 이메일에 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와 "approve" 댓글 속성을 사용하여 특정 주문에 연결된 댓글을 나열하려는지 확인하기만 하면 됩니다. (이 경우 WooCommerce에 의해) 검증됩니다.
코드
테마 폴더의 function.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()와 같은 몇 가지 유용한 함수를 사용하는 것에 유의하세요.
게시물이 즐거웠기를 바랍니다. 아래 양식에 댓글을 남겨주세요. 이에 대한 피드백을 받고 싶습니다!
