2026年5月21日

2026年5月21日

WooCommerceの注文管理を効率化する方法(ステータス・一括変更・メール再送・CSV出力)

WooCommerce の注文は、管理画面の「WooCommerce」→「注文」で一覧・編集できます。注文が増えてきたら、標準の一括操作とメール再送信の機能をまず使い、それでも足りない部分だけ WP-CLI やコードで補うのが手間の少ない進め方です。

この記事の手順とコードは、2026年11月時点の WooCommerce 11.2.2(WordPress 7.1・PHP 8.3)で動作を確かめたものです。画面の表記は日本語版の管理画面に合わせています。

注文ステータスの意味

WooCommerce の公式ドキュメント(Order Statuses)にある標準のステータスは次の8つです。

ステータス 意味
支払い待ち(Pending payment) 注文は受けたが、まだ支払いが無い
処理中(Processing) 支払いが済み、在庫が減らされた。発送を待っている
保留中(On hold) 支払いの確認待ち。銀行振込(BACS)などで使われる
完了(Completed) 発送などが終わり、対応が済んだ
キャンセル(Cancelled) 管理者か顧客が取り消した。在庫管理が有効なら在庫が戻る
払い戻し(Refunded) 全額を返金した
失敗(Failed) 決済が失敗した、または拒否された
下書き(Draft) ブロック版のチェックアウトで、注文確定前に作られる一時的な記録

「下書き」は注文確定前の一時的なもので、使われなくなったものは WooCommerce が毎日自動で削除します。手で処理する必要はありません。

ふだんの流れは「処理中」→(発送)→「完了」です。「完了」に変えると、顧客に完了の通知メールが送られます(「WooCommerce」→「設定」→「メール」で有効になっている場合)。

注文一覧で一括変更する

複数の注文のステータスを変えるだけなら、コードは要りません。

  1. 「WooCommerce」→「注文」を開きます。
  2. 上のタブ(「処理中」など)でステータスを絞り込み、変える注文にチェックを入れます。
  3. 一括操作のメニューから「注文状況を完了済みに変更」などを選び、「適用」を押します。

標準で用意されている一括操作は、処理中・保留中・完了済み・キャンセルへの変更と、ゴミ箱への移動です。

注文メールを再送信する

顧客から「メールが届かない」と言われたときは、注文の編集画面から送り直せます。

  1. 注文一覧で注文番号をクリックして編集画面を開きます。
  2. 右側の注文の操作ボックスで「アクションを選択...」を開き、送りたいメールを選びます(下の表)。
  3. 「更新」を押します。
選ぶ項目 送られるメール
注文の詳細を顧客に送信 注文内容を顧客に送る
新しいご注文通知の再送信 管理者向けの新規注文メールを送り直す

再送信しても届かない場合は、WooCommerce ではなくサーバーのメール送信に原因があることが多いので、SMTP の設定を確認します。

WP-CLIで注文を一覧・更新する

SSH で WP-CLI が使えるなら、wp wc shop_order コマンドで注文を扱えます。コマンド名は shop_order で、wp wc order というコマンドはありません。

WooCommerce の CLI は内部で REST API を使うため、--user に権限のあるユーザー(管理者のユーザー名か ID)を付けます。付けないと Sorry, you cannot list resources. というエラーになります。

# 処理中の注文を表で表示
wp wc shop_order list --status=processing --fields=id,status,total --user=admin

# 処理中の注文の件数
wp wc shop_order list --status=processing --format=count --user=admin

# 注文 123 を完了にする
wp wc shop_order update 123 --status=completed --user=admin

処理中の注文をまとめて完了にするときは、ID の一覧を取ってから1件ずつ更新します。完了の通知メールが1件ずつ送られるので、件数を確かめてから実行してください。

for id in $(wp wc shop_order list --status=processing --format=ids --user=admin); do
  wp wc shop_order update "$id" --status=completed --user=admin
done

ほかに使えるオプションは wp help wc shop_order list で確認できます。

独自のステータス「発送待ち」を追加する

「処理中」と「完了」のあいだに「発送待ち」のような段階を置きたい場合は、コードでステータスを追加します。次のコードは、ステータスの登録、ステータス一覧への追加、注文一覧の一括操作への追加を行います。

wp-content/mu-plugins/wc-awaiting-shipment.php として保存すると、プラグインとして有効化しなくても読み込まれます(mu-plugins フォルダーが無ければ作ります)。テーマの functions.php に書くと、テーマを変えたときにステータスが消えるので、この置き場所をおすすめします。

<?php
/**
 * Plugin Name: 発送待ちステータス
 */

// 1. ステータスを登録する(従来の投稿テーブルで保存している場合に必要)
add_filter( 'woocommerce_register_shop_order_post_statuses', function ( $statuses ) {
	$statuses['wc-awaiting-shipment'] = array(
		'label'                     => '発送待ち',
		'public'                    => false,
		'exclude_from_search'       => false,
		'show_in_admin_all_list'    => true,
		'show_in_admin_status_list' => true,
		/* translators: %s: 件数 */
		'label_count'               => _n_noop( '発送待ち <span class="count">(%s)</span>', '発送待ち <span class="count">(%s)</span>' ),
	);
	return $statuses;
} );

// 2. 注文ステータスの一覧に加える(「処理中」の次に並べる)
add_filter( 'wc_order_statuses', function ( $statuses ) {
	$new = array();
	foreach ( $statuses as $key => $label ) {
		$new[ $key ] = $label;
		if ( 'wc-processing' === $key ) {
			$new['wc-awaiting-shipment'] = '発送待ち';
		}
	}
	return $new;
} );

// 3. 注文一覧の一括操作に「発送待ちに変更」を加える(HPOS と従来の画面の両方)
foreach ( array( 'bulk_actions-woocommerce_page_wc-orders', 'bulk_actions-edit-shop_order' ) as $hook ) {
	add_filter( $hook, function ( $actions ) {
		$actions['mark_awaiting-shipment'] = '注文状況を発送待ちに変更';
		return $actions;
	} );
}

ポイントは次のとおりです。

  • ステータスのキーは wc- で始め、全体を20文字以内にします(投稿ステータスの保存欄の長さが20文字のため)。
  • 一括操作のキーを mark_ + ステータス名(wc- を除いた部分)にすると、WooCommerce の標準の処理がそのままステータスを変えてくれます。処理用のコードは要りません。
  • WP-CLI からも --status=awaiting-shipment で一覧・更新できます。

ステータスが変わったときに処理を動かす

ステータスが変わると、woocommerce_order_status_{ステータス名} というアクションが動きます(wc- は付けません)。引数は注文 ID と注文オブジェクトです。次の例は、発送待ちになった注文に社内向けのメモを残します。倉庫システムへの連絡などは、この中に書きます。

<?php
add_action( 'woocommerce_order_status_awaiting-shipment', function ( $order_id, $order ) {
	$order->add_order_note( '発送待ちになりました。出荷指示を確認してください。' );
}, 10, 2 );

外部の API に送る場合は、wp_remote_post() の戻り値を is_wp_error() で確かめ、失敗したときに注文メモへ残すようにしておくと、取りこぼしに気付けます。

注文をCSVで書き出す

管理画面から書き出す

「アナリティクス」→「注文」で期間とステータスを指定し、表の右上の「ダウンロード」を押すと CSV を取得できます。件数が多い場合は、作成後にメールで届くことがあります。

WP-CLIで書き出す

項目を自分で決めたい場合は、次の PHP ファイルを作り、wp eval-file で実行します。wc_get_orders() を使うので、注文データの保存方式(HPOS か従来の投稿テーブルか)に関係なく動きます。

<?php
// 使い方: wp eval-file export-orders.php > orders.csv
// 完了済みで、2026年1月1日以降に作成された注文を CSV で出力する
$orders = wc_get_orders(
	array(
		'status'       => array( 'completed' ),
		'date_created' => '>=2026-01-01',
		'limit'        => -1,
		'orderby'      => 'date',
		'order'        => 'ASC',
	)
);

$out = fopen( 'php://output', 'w' );
fputcsv( $out, array( 'order_id', 'date', 'name', 'email', 'total' ) );
foreach ( $orders as $order ) {
	fputcsv(
		$out,
		array(
			$order->get_id(),
			$order->get_date_created() ? $order->get_date_created()->date( 'Y-m-d H:i' ) : '',
			$order->get_billing_last_name() . ' ' . $order->get_billing_first_name(),
			$order->get_billing_email(),
			$order->get_total(),
		)
	);
}
fclose( $out );
wp eval-file export-orders.php > orders.csv

期間の指定は date_created に '>=2026-01-01' や '2026-01-01...2026-03-31' の形で書きます。fputcsv() を使うと、名前にカンマが含まれていても列がずれません。Excel で開いて文字化けする場合は、データの取り込み機能で文字コードに UTF-8 を指定します。

注文が数万件ある場合は、'limit' => -1 ではメモリが足りなくなることがあります。'limit' => 500 と 'page' => 1, 2, 3… に分けて実行してください。

注意点

  • 注文データの保存場所。 WooCommerce 8.2 以降の新規ストアでは、高パフォーマンス注文ストレージ(HPOS)が初期状態で有効で、注文は wp_wc_orders などの専用テーブルに保存されます。どちらを使っているかは「WooCommerce」→「設定」→「高度な設定」→「機能」の「注文データストレージ」で確認できます。データベースに直接 SQL を書くと保存方式によって動かなくなるので、wc_get_orders() や WC_Order のメソッドを使います。
  • ステータスを手で戻すとき。 在庫や売上の集計に影響することがあります。たとえば「キャンセル」にすると在庫が戻ります。戻す前に注文メモで経緯を確認してください。
  • 独自ステータスを削除するとき。 そのステータスの注文が残っている状態でコードを外すと、注文一覧で見えなくなります。先に別のステータスへ移してからコードを外します。

関連記事

お気軽にご相談ください

お見積りへ お問い合わせへ
▲