2026年5月21日

2026年5月21日

WooCommerceの注文管理を効率化する方法・ステータス変更・一括処理・自動化

はじめに

「注文が溜まってきて手動での処理が追いつかない」「特定ステータスの注文を一括で処理したい」——WooCommerceの注文管理機能を使いこなすと、受注から発送完了までのワークフローを大幅に効率化できます。

症状・原因

WooCommerceの注文ステータスは「保留中・処理中・完了・キャンセル」など9種類のデフォルト状態があります。業務フローに合わせたカスタムステータスの追加や、ステータス変更に連動した自動処理が設定されていないと、手動対応が増えてしまいます。

解決手順

ステップ1:注文ステータスを確認・変更する

# 注文一覧をWP-CLIで確認
wp wc order list \
  --status=processing \
  --fields=id,status,total,billing_email \
  --format=table \
  --user=1

# 特定注文のステータスを変更
wp wc order update 123 \
  --status=completed \
  --user=1

# 複数注文を一括でステータス変更
for id in 101 102 103 104 105; do
  wp wc order update $id --status=completed --user=1
done

ステップ2:カスタム注文ステータスを追加する

// カスタム注文ステータスを登録
add_action( 'init', function() {
    register_post_status( 'wc-awaiting-shipment', [
        'label'                     => '発送待ち',
        'public'                    => true,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( '発送待ち (%s)', '発送待ち (%s)' ),
    ] );
} );

// WooCommerceの注文ステータス一覧に追加
add_filter( 'wc_order_statuses', function( $statuses ) {
    $statuses['wc-awaiting-shipment'] = '発送待ち';
    return $statuses;
} );

// ステータス変更時の自動処理
add_action( 'woocommerce_order_status_awaiting-shipment', function( $order_id ) {
    $order = wc_get_order( $order_id );
    // 倉庫システムへの通知など
    wp_remote_post( 'https://warehouse.example.com/api/orders', [
        'body' => json_encode( [
            'order_id' => $order_id,
            'items'    => $order->get_items(),
        ] ),
        'headers' => [ 'Content-Type' => 'application/json' ],
    ] );
} );

ステップ3:注文メールを再送信する

// 注文確認メールを再送信
function resend_order_email( $order_id, $email_type = 'customer_processing_order' ) {
    $order  = wc_get_order( $order_id );
    $mailer = WC()->mailer();
    $emails = $mailer->get_emails();

    $email_classes = [
        'customer_processing_order' => 'WC_Email_Customer_Processing_Order',
        'customer_completed_order'  => 'WC_Email_Customer_Completed_Order',
        'new_order'                 => 'WC_Email_New_Order',
    ];

    if ( isset( $email_classes[ $email_type ] )
        && isset( $emails[ $email_classes[ $email_type ] ] ) ) {
        $emails[ $email_classes[ $email_type ] ]->trigger( $order_id );
        return true;
    }
    return false;
}

// 管理画面の注文アクションに「メール再送信」を追加
add_filter( 'woocommerce_order_actions', function( $actions ) {
    $actions['send_order_confirmation'] = '注文確認メールを再送信';
    return $actions;
} );

add_action( 'woocommerce_order_action_send_order_confirmation', function( $order ) {
    resend_order_email( $order->get_id(), 'customer_processing_order' );
} );

ステップ4:注文データをエクスポートする

# WP-CLIで注文データをCSVエクスポート
wp eval '
$orders = wc_get_orders([
    "status" => "completed",
    "date_after" => "2025-01-01",
    "limit" => -1,
]);
echo "ID,顧客名,合計,日付\n";
foreach ($orders as $order) {
    echo implode(",", [
        $order->get_id(),
        $order->get_billing_last_name() . $order->get_billing_first_name(),
        $order->get_total(),
        $order->get_date_created()->date("Y-m-d"),
    ]) . "\n";
}
' > orders_completed.csv

wc -l orders_completed.csv

ステップ5:古い注文を自動アーカイブする

// 90日以上前の完了注文を自動アーカイブ(カスタムステータスへ移動)
add_action( 'woocommerce_scheduled_sales', function() {
    $old_orders = wc_get_orders( [
        'status'     => 'completed',
        'date_before' => date( 'Y-m-d', strtotime( '-90 days' ) ),
        'limit'      => 100,
    ] );

    foreach ( $old_orders as $order ) {
        $order->update_status( 'wc-archived', '自動アーカイブ' );
    }
} );

// WP-Cronでスケジュール
add_action( 'wp', function() {
    if ( ! wp_next_scheduled( 'archive_old_orders' ) ) {
        wp_schedule_event( time(), 'daily', 'archive_old_orders' );
    }
} );
add_action( 'archive_old_orders', function() {
    // 上記のアーカイブ処理を実行
} );

注意事項

  • 注文ステータスを手動変更すると、関連する在庫調整や会計データに影響する場合があります。変更前に影響範囲を確認してください。
  • カスタムステータスを追加する場合、スラッグはwc-プレフィックスをつける必要があります(例:wc-awaiting-shipment)。
  • WooCommerceの注文データはHPOS(High-Performance Order Storage)移行後はwp_wc_ordersテーブルに保存されます。直接DBクエリを書く場合はHPOS対応を確認してください。

まとめ

WooCommerceの注文管理効率化は「カスタムステータス追加→自動処理設定→メール再送信→CSVエクスポート→自動アーカイブ」の組み合わせで実現できます。WP-CLIを活用した一括処理も積極的に活用しましょう。関連記事:WooCommerceのレポート・売上分析を活用する方法WooCommerce決済エラーを解決する方法

お気軽にご相談ください

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