WooCommerceで注文ステータスを自動的に変更する方法

公開: 2021-07-31

ストアの注文ステータスを更新しますか? あなたは正しい場所に来ました。 このガイドでは、いくつかのPHPスクリプトを使用して、WooCommerceで注文ステータスを自動的に変更する方法を説明します。 高度なコーディングスキルがなくても心配しないでください。各スクリプトについて詳しく説明します。

WooCommerceは開発者に多くの機能を提供するため、コーディングスキルがあれば、あらゆる種類のカスタマイズを行ってeコマースストアを改善できます。 次のチュートリアルでは、注文ステータスについて知る必要があるすべてを学びます。 これは、大量の注文を管理するときに非常に役立つWooCommerceの機能です。 これは、ショップマネージャーが特定のステータスの注文を簡単に検索して特定のアクションを実行できるバックエンド注文リストで特に役立ちます。

それ以上の苦労なしに、すぐにそれに飛び込みましょう。

WooCommerceの注文状況はどうなっていますか?

注文ステータスは、注文の現在の状態を表す、注文に付けられたタグです。 これは、投稿の現在の状態に関する特定の情報を説明する、投稿に添付された分類法に似ています。 たとえば、お客様が「注文」ボタンを押すと、当店で注文します。 デフォルトでは、注文ステータスは「支払い待ち」に設定されています。

ストアがPayPalやStripeなどの支払いゲートウェイと統合されている場合、以前のデフォルトステータス(保留中)が検証され、支払いゲートウェイの検証結果に応じて「保留中」または「失敗」に変わります。 その後、支払いが完了すると、注文ステータスは自動的に「処理中」に変わり、支払いが失敗すると、ステータスは「失敗」になります。

ご覧のとおり、これらの各ステータスは、注文に関する関連情報を提供します。 この自動化により、注文の支払いが完了したかどうかを通知して、製品を顧客に届けることができます。

WooCommerceの注文ステータス

これらはすべて、WooCommerceで利用可能な注文ステータスとそれぞれの意味です。

  • 保留中の支払い:注文は受領され、支払いは登録されていません。 お支払いをお待ちしております
  • 失敗:何らかの理由で支払いが失敗しました。 これは、支払いプラットフォーム(PayPalなど)から拒否されたか、さらに認証(SCA)が必要であることを意味します。
  • 処理中:ショップが支払いを受け取り、商品の在庫が更新され、購入が予定どおりに行われるようになりました。
  • 完了:注文は履行され、完了しました。 これは、すべてがうまくいった注文の最後の状態です
  • 保留中:顧客は支払いを行っていないため、注文にはショップマネージャーからの確認が必要です
  • キャンセル済み:ショップ管理者またはユーザーのいずれかが、ある時点で注文をキャンセルしました。 注文をキャンセルした理由を理解するために顧客に連絡することをお勧めしますが、これ以上のアクションは必要ありません。
  • 返金済み:注文は返金されました。これ以上のアクションは必要ありません。

注文ステータスとその機能について理解が深まったので、それを更新することがなぜ良い考えであるかを見てみましょう。

デフォルトの注文ステータス機能を変更するのはなぜですか?

各eコマースストアは異なり、特定の要件があります。 一部のオンラインストアでは、注文ステータスをまったく使用しない場合や、すべてを使用しない場合があります。 たとえば、買い物客が商品を返品できない場合、ストアは払い戻しステータスを使用しない可能性があります。

さらに、デフォルトの注文ステータス機能では不十分で、ショップが注文ステータス管理のためにカスタムステータスまたは自動化されたソリューションを必要とする場合があります。 このような場合、注文ステータスの動作をカスタマイズすることは、ショップ管理を改善するための優れたソリューションです。 このように、eコマースストアはすべてのケースで注文ステータスを手動で更新する必要がありません。

これにより、店舗のオーナーは時間を節約し、ビジネスを改善するためのより重要なことに集中できるようになります。

WooCommerceで注文ステータスがどのように変化するか

この時点で、WooCommerceがPayPal、Payoneer、Stripeなどの支払いゲートウェイと統合されている場合、注文ステータスが動的に変化することを理解することが重要です。 予期しないときにステータスを手動で更新すると、ストアで紹介されている支払い方法が破られ、顧客が購入プロセスを実行できなくなる可能性があることに注意してください。

これから行うことをよりよく理解するために、注文ステータスフローがどのように機能するかを見てみましょう。

woocommerce-order-status

WooCommerceのドキュメントから

上の図でわかるように、注文ステータスの最初の段階は「保留中」です。 その直後、支払いゲートウェイは、ユーザーが支払いを完了できるかどうかを検証し、支払いが正常に完了すると、ステータスを「保留中」に変更し、次に「処理中」に変更します。 それ以外の場合は、「失敗」に変わります。

この後、WooCommerceは他に何もしません。 ショップマネージャーは、注文を「完了」または「キャンセル」としてマークする必要があります。 この時点で、支払いゲートウェイが統合されている場合でも、注文ステータスを自動的に(プログラムで)変更しても安全です。

さらに、ステータスが「処理中」または「返金済み」に変わると、注文に含まれる製品の在庫が再計算されることを知っておくことが重要です。 その注文に関連するオンラインストアのすべての統計でも同じことが起こります。

注文ステータスがどのように変化するかが明確になったので、WooCommerceで注文ステータスを更新する方法を見てみましょう。

WooCommerceで注文ステータスを自動的に変更する方法

WooCommerceでプログラムで注文ステータスを変更するためのサンプルスクリプトをいくつか見てみましょう。

:いくつかのコアファイルを編集するため、開始する前に、サイトの完全バックアップを作成してください。 さらに、子テーマを作成するか、まだプラグインがない場合はこれらのプラグインのいずれかを使用するため、テーマを更新した後もカスタマイズを維持できます。

購入後にすべての注文ステータスを変更する

eコマースストアが注文ステータスを使用する支払いゲートウェイと統合されていない場合は、顧客が注文した直後に、「処理中」のままにする代わりに、すべての注文を保留にすることができます。 このスクリプトを見てみましょう。

 function QuadLayers_change_order_status($ order_id){  
                if(!$ order_id){return;}            
                $ order = wc_get_order($ order_id);
                if( '処理' == $ order-> get_status()){
                    $ order-> update_status( 'wc-on-hold');
                }
}
add_action( 'woocommerce_thankyou'、 'QuadLayers_change_order_status');

woocommerce_thankyouフックを使用して、注文が行われた直後に関数をトリガーし、 update_status()を使用してステータスを変更します。

ご覧のとおり、ステータススラッグにはプレフィックス(WC)が付いています。 この関数はプレフィックスなしでも機能しますが、使用することをお勧めします。

woocommerce-order-status-on-hold

コードを調整することで、「保留中」の代わりに、他のステータスやカスタムステータスを使用できることに注意してください。

注文IDから注文ステータスを変更する

次のスクリプトは、単一の注文のステータスを変更します。 たとえば、注文115の注文ステータスを変更するには、次のスニペットを使用します。

 add_action( 'init'、function(){
	$ order = new WC_Order(115);
        $ order-> update_status( 'wc-processing'); 
});

これは短いスクリプトなので、 'init' WordPressフックで無名関数を使用しました。

これにより、スクリプトが有効になっている間はステータスをさらに変更できないことに注意してください。

リピーターのWooCommerce注文ステータスを更新

これは、WooCommerceで注文ステータスを自動的に変更するもう1つの興味深い例です。 以下のスクリプトは、ユーザーが以前の注文に「完了」または「処理中」のステータスが付いている場合にのみ、注文ステータスを「完了」に変更します。

 function QuadLayers_order_status_returning($ order_id){
        //この顧客の注文を取得します
         $ user_id = wp_get_current_user();
        $ customer_orders = [];
        foreach(wc_get_is_paid_statuses()as $ payd_status){
            $ customer_orders + = wc_get_orders([
                'type' => 'shop_order'、
                'limit' =>-1、
                'customer_id' => $ user_id-> ID、
                'status' => $ payed_status、
            ]);
        }
            #以前の注文が存在します
            if(count($ customer_orders)> 0){ 
                     if(!$ order_id){return;}            
                     $ order = wc_get_order($ order_id);
                     if( '処理' == $ order-> get_status()){
                         $ order-> update_status( 'wc-completed');
                     }
            }
}
add_action( 'woocommerce_thankyou'、 'QuadLayers_order_status_returning');

これは、セキュリティのレイヤーを追加し、リピーターのショッピング体験を向上させるための良いアイデアです。

URLパラメータの注文ステータスを変更する

このサンプルスクリプトは、URLパラメータがブラウザに存在する場合、特定の注文ステータスに変更されます。 init WordPressフックを使用しているため、スクリプトはストアのどのページでも機能します。

さらに、現在ログインしているユーザーの最新の注文の注文ステータスを編集します。 この例では、次のような「revert」パラメータがURLにある場合、注文ステータスは「キャンセル済み」に変わりhttps://website.com/shop?st=revert ://website.com/shop?st = revert

 add_action( 'init'、function(){
    if(isset($ _ GET ['st'])&&!empty($ _ GET ['st'])):
        $ get_url = $ _GET ['st'];
 
        if($ get_url == 'revert'):
            $ user_id = wp_get_current_user();
            $ order = wc_get_customer_last_order($ user_id-> ID);  
            $ order-> update_status( 'wc-cancelled');
        endif;
    endif;
});

カスタムオーダーステータスを作成する

この例では、注文のステータスを変更する代わりに、自由に使用できる新しいカスタム注文ステータスを作成します。 これは、既存のステータスでは不十分な場合、またはより明確にするために新しいステータスを作成する場合に適しています。 カスタムオーダーステータスを作成すると、上記のスクリプトのいずれかで使用できます。

次のスクリプトは、新しいステータスを登録して注文ステータスリストに追加します。 この場合、新しいカスタム注文ステータスを「進行中」と呼びますが、コードをカスタマイズするだけで、任意の名前を使用できます。

 //新しいステータスを登録します
function register_in_progress_order_status(){
    register_post_status( 'wc-in-progress'、array(
        'ラベル' => '進行中'、
        'public' => true、
        'show_in_admin_status_list' => true、
        'show_in_admin_all_list' => true、
        'exclude_from_search' => false、
        'label_count' => _n_noop( '進行中(%s) '、 '進行中(%s) ')
    ));
}
//カスタムステータスを注文ステータスリストに追加します
function add_in_progress_to_order_statuses($ order_statuses){
    $ new_order_statuses = array();
    foreach($ order_statuses as $ key => $ status){
        $ new_order_statuses [$ key] = $ status;
        if( 'wc-processing' === $ key){
            $ new_order_statuses ['wc-in-progress'] = '進行中';
        }
    }
    $ new_order_statusesを返します;
}
add_action( 'init'、 'register_in_progress_order_status');
add_filter( 'wc_order_statuses'、 'add_in_progress_to_order_statuses');



woocommerce-custom-order-status

WooCommerceの注文ステータスを変更する他の方法

WooCommerceのデフォルトの注文ステータスを更新する別の方法を探している場合は、いくつかのプラグインを確認できます。 残念ながら、このための無料のツールは多くありませんが、これらは最高のツールのいくつかです。

  • YITHカスタム注文ステータス:注文ステータスを管理し、カスタムステータスを作成するための優れたツール。 市場で最高のツールの1つですが、安くはありません。 それはあなたを年間79.99€戻すでしょう。
  • WooCommerce Order Status Manager :注文ステータスを追加、削除、編集するためのもう1つの優れたプラグイン。 注文のステータスに基づいてメールをトリガーすることもできます。 年間49米ドルかかります。
  • WooCommerceのカスタム注文ステータス:WooCommerceで注文ステータスを管理するための最良のツールの1つ。 これは、年間39米ドルから始まるプレミアムプラグインです。
  • Ni WooCommerceカスタム注文ステータス:注文ステータスを簡単に管理できる数少ない信頼できる無料プラグインの1つ。

WooCommerceストアで注文ステータスを確認する方法

ストアの注文ステータスを確認する最も簡単な方法は、WooCommerceダッシュボードを開いて[注文]に移動することです。 次に、任意の注文を開き、[全般]セクションで[ステータス]ドロップダウンを押します。 そこにあなたの店のすべての注文が表示されます。

結論

要約すると、注文ステータスは、注文の現在の状態を表すタグです。 WooCommerceには特定のデフォルトのステータスが含まれていますが、それらをカスタマイズすることは、新しいステータスを削除または追加したい人にとっては良い考えです。 また、注文ステータス管理の自動化されたソリューションを必要とする企業にとっても興味深いソリューションになる可能性があります。

このガイドでは、WooCommerceで注文ステータスを自動的に変更するためのすべてのデフォルトの注文ステータスとさまざまな例を見てきました。 これらはほんの一部のアイデアですが、できることはもっとたくさんあります。 これらのスクリプトをベースにして、ストアに合わせてカスタマイズすることをお勧めします。

ストアをカスタマイズする方法の詳細については、次のチュートリアルを参照してください。

  • WooCommerceクーポンを自動的に適用する方法
  • プログラムでWooCommerceThankYouページを編集する
  • WooCommerce登録フォームをカスタマイズする方法
  • WooCommerceの注文をテストする3つの方法
  • WooCommerceAJAX製品フィルターを追加する方法

ストアの注文ステータスを更新しましたか? このガイドに従って問題が発生しましたか? 以下のコメントでお知らせください!