WooCommerce 注文管理の効率化:注文メモを一目で確認する方法

WordPress WooCommerce ショッピングモールで注文管理をしてみると、決済失敗の理由やPG社のエラーメッセージを確認するために毎回個別注文詳細ページに入らなければならない煩わしさがあります。特に1日に数十、数百件の注文が発生するショッピングモールなら、失敗した注文の原因を一回クリックして確認するのはかなりの時間無駄です。

注文メモを毎日確認する手間を省き、注文リストページから迅速に注文失敗の原因を把握できるように、注文リストページに注文ノートを表示する簡単なコードを作成しました。

WooCommerce 注文管理の効率化:注文メモを一目で確認する方法

WooCommerce 注文メモ

WooCommerceの注文メモは、オンラインショッピングモールの運営に不可欠な記録管理ツールであり、注文のライフサイクル全体を追跡および管理するための重要な機能です。支払いの承認と失敗のメッセージ、PGのエラーの理由から配送の進捗状況、在庫の変動履歴まで、すべての注文関連イベントが時系列に自動的に記録され、管理者は内部メモを介してチームメンバー間で通信し、顧客のメモを介してバイヤーに直接案内メッセージを配信できます。

また、 WooCommerce 拡張プラグインの自動化ログ、クーポン適用履歴、払い戻し処理過程などがすべて注文メモに記録され、紛争発生時の法的証拠資料としても活用可能であり、複数の管理者がコラボレーションする環境で誰がいつどのような措置を取ったかを明確に把握でき、体系的な注文管理が可能です。

WooCommerce 注文メモの主な機能

注文履歴履歴

  • 注文のすべての変更と処理プロセスを時系列に自動記録
  • 注文ステータス変更(処理中、完了、キャンセルなど)時に自動的にメモを生成
  • 管理者が注文に対して行ったすべてのアクションを追跡可能

お支払い情報とエラーメッセージの保存

  • PG社(決済ゲートウェイ)が配信する決済承認/失敗メッセージの記録
  • 支払い失敗の理由(限度超過、残高不足、カードエラーなど)の自動保存
  • 払い戻し処理履歴とトランザクションIDの履歴

管理者間のコミュニケーション

  • 複数の管理者が注文を処理するときに内部メモでコミュニケーション
  • 特定の注文に関する注意事項または特異事項を共有する
  • カスタマーリクエストまたはCS処理履歴の記録

顧客とのコミュニケーションツール

  • お客様に公開されるメモ(Customer Note)を通じて注文進行状況案内
  • 配送遅延、在庫不足などの状況をお客様に直接お届け
  • メール通知とともにお客様に自動送信可能

配送および在庫管理履歴

  • 配送準備、出庫、配送完了などの物流処理過程の記録
  • 在庫控除と回復履歴の自動保存
  • 請求書番号と宅配会社情報の記録

クーポンと割引の適用履歴

  • 適用されたクーポンコードと割引金額の自動記録
  • プロモーションが適用されたかどうかを追跡

プラグインと自動化ログ

  • WooCommerce 拡張プラグインによる自動処理ログの記録
  • 自動メール送信、在庫同期、外部システム連携などの作業履歴の保存
  • 開発者がカスタム機能を実行したときのデバッグ情報の記録

法的証拠と監査証跡

  • 注文処理のすべての過程を時間順に保管し、紛争時の証拠資料として活用
  • 払い戻し、キャンセルなどの重要な決定の根拠記録
  • コンプライアンスのための監査証跡機能

メモタイプの区切り

  • Internal Note (内部メモ):管理者だけが閲覧できるプライベートメモ
  • Customer Note (顧客メモ): お客様に公開されるメモでメール通知可能
  • System Note (システムノート): WooCommerceが自動的に生成するメモ

検索とフィルタリング

  • 特定のキーワードで注文メモを検索可能
  • 注文ステータス別、日付別にメモをフィルタリング
  • 大量の注文データから特定の問題をすばやく見つけることができます

オーダーリストページにオーダーメモ欄を追加してオーダーメモを一目で確認する

注文が失敗した場合の注文ページ(WooCommerce » 注文)に 상태が」失敗しました「と表示されます。失敗の理由を確認するには、注文をクリックして注文のメモを確認して、正確な理由を特定できます。

WooCommerce 注文ページ

注文詳細ページの右サイドバー部分にある '注文メモ'セクションで失敗の理由を確認できます。

WooCommerce 注文詳細ページ 注文メモ

通常、ユーザーは注文をキャンセルして注文を失敗しますが、上記のようにカード/アカウントの1日の上限または月の上限を超えて注文が失敗することがあります。

お支払いに失敗しました。カード/口座の1日限度超過または残高不足の可能性が高いです。制限を確認するか、別のカードで試してください。

この場合、ユーザーは制限を超えて注文に失敗したため、他のカードや他の方法で支払いをするように指示するメッセージを表示することを検討できます。

クレジットカード利用限度はカード会社ホームページで確認して利用限度を上方調整または下方調整することができます。私はカードを紛失したときのダメージに備えて利用限度を下方調整しました。 😄

WooCommerce 注文リストページに注文メモ列を追加する

注文ページですぐに注文メモを確認したい場合は、次のコードを使用しています チャイルドテーマの関数ファイルに追加できます。

/**
 * 1. 주문 목록 컬럼 헤더 추가 (HPOS 호환)
 */
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'custom_add_order_notes_column_header', 20 );
add_filter( 'manage_edit-shop_order_columns', 'custom_add_order_notes_column_header', 20 );
function custom_add_order_notes_column_header( $columns ) {
	// 'latest_note'라는 ID로 컬럼 추가
	$columns['latest_note'] = '최신 주문 메모';
	return $columns;
}

/**
 * 2. 컬럼에 내용 출력 (HPOS 호환)
 */
add_action( 'manage_woocommerce_page_wc-orders_custom_column', 'custom_show_order_notes_content_hpos', 10, 2 );
function custom_show_order_notes_content_hpos( $column, $order ) {
	if ( 'latest_note' === $column ) {
		// HPOS에서는 $order가 WC_Order 객체로 전달됨
		if ( is_a( $order, 'WC_Order' ) ) {
			$order_id = $order->get_id();
		} else {
			$order_id = $order;
		}
		
		custom_display_latest_note( $order_id );
	}
}

// 기존 방식 (Post 기반) 호환
add_action( 'manage_shop_order_posts_custom_column', 'custom_show_order_notes_content', 10, 2 );
function custom_show_order_notes_content( $column, $post_id ) {
	if ( 'latest_note' === $column ) {
		custom_display_latest_note( $post_id );
	}
}

/**
 * 3. 최신 주문 메모 출력 함수 (여러 메모를 이어서 표시)
 */
function custom_display_latest_note( $order_id ) {
	// WC_Order 객체 가져오기
	$order = wc_get_order( $order_id );
	
	if ( ! $order ) {
		echo '<span style="color:#ccc;">-</span>';
		return;
	}
	
	// 주문 메모 가져오기 (최신 여러 개, customer note 제외)
	$notes = wc_get_order_notes( array(
		'order_id' => $order_id,
		'limit'    => 10, // 최대 10개의 메모 가져오기 (필요에 따라 조정)
		'orderby'  => 'date_created',
		'order'    => 'DESC',
		'type'     => 'internal', // 'internal', 'customer', 또는 빈값(모두)
	) );
	
	if ( ! empty( $notes ) ) {
		$combined_content = '';
		
		// 모든 메모를 하나로 합치기
		foreach ( $notes as $note ) {
			// HTML 태그 제거 및 텍스트 정리
			$note_content = strip_tags( $note->content );
			$note_content = trim( $note_content );
			
			if ( ! empty( $note_content ) ) {
				// 메모 사이에 구분자 추가 (선택사항)
				if ( ! empty( $combined_content ) ) {
					$combined_content .= ' | '; // 구분자
				}
				$combined_content .= $note_content;
			}
		}
		
		// 100자로 자르기
		if ( mb_strlen( $combined_content, 'UTF-8' ) > 100 ) {
			$trimmed_content = mb_substr( $combined_content, 0, 100, 'UTF-8' );
			echo esc_html( $trimmed_content ) . '...';
		} else {
			echo esc_html( $combined_content );
		}
		
	} else {
		echo '<span style="color:#ccc;">-</span>';
	}
}

/**
 * 4. 컬럼 정렬 가능 설정 (선택사항)
 */
add_filter( 'manage_edit-shop_order_sortable_columns', 'custom_make_order_notes_sortable' );
function custom_make_order_notes_sortable( $columns ) {
	// 정렬은 복잡하므로 필요시 추가 개발 필요
	// $columns['latest_note'] = 'latest_note';
	return $columns;
}

上記のコードは、 WooCommerce最新の注文保存方式であるHP-Performance Order Storage(HPOS)と従来のPost方式の両方をサポートし、複数の注文メモを1つにまとめて表示するため、管理者は注文状況をはるかに効率的に把握できます。

上記のコードをテーマの関数ファイルに入力すると、注文ページに 最新の注文メモ 列が追加され、最近のメモ(最大10個)の内容が最大100文字まで表示されます。

WooCommerce 注文ページに最新の注文メモ欄を追加する

FTPにアクセスして、チャイルドテーマ(サブテーマ、子テーマ)の関数ファイルにコードを追加してください。チャイルドテーマを使用せずに親テーマの関数ファイルに追加すると、テーマが更新されるとコードは消えます。

FTP / SFTPに接続する方法がわからない場合 Naver カフェの投稿からプラグインをダウンロードしてインストールできます。

参照

2のコメント

コメントを残す