2017-12-26 8 views
2

私はPHPプログラミングの初心者です。私は、定義済みの注文(私の場合は108)からのorder_statusが完了するように変更されるPHPファイルを作成したかったのです。カスタムPHPファイルでのWoocommerce関数の使用

したがって、私はwoocommerce関数get_order($ID)update_statusが必要ですが、PHPでそれらを使用する方法はわかりません。あなたが私の問題を理解することを願っていますJavaから、私はクラスなどのインスタンスを取得する必要があると思いますか?

<?php $ord = new WC_Order(108); $ord->update_status('completed'); ?> 

私は、私は次のエラーを受け取るページ開くとき:Wordpressの/ WooCommerce上で一般的に

Fatal error: Uncaught Error: Class 'WC_Order' not found (...) 
+0

あなたがこれまで持っているコードを投稿してください。 –

+0

こんにちはレオポルド、これはこれまで私が持っているものです: <?php $ ord = new WC_Order(108); $ ord-> update_status( 'completed'); 致命的なエラー:不明なエラー:私は、私は次のエラーを受け取るページ開くと > ?はどのようなファイルでは、クラスのWC_Order 'が見つかりません(...) –

+0

を、あなたはこのコードを入れていますか?私はどのようなコードのライブラリが含まれているのか把握しようとしています。 –

答えて

2

を、あなたの関数のコードが含まれます。ここ

は、これまで私が持っているコードです。 :

  • アクティブな子テーマ(またはアクティブなテーマ)function.phpファイル
  • あなたはまた、中にいくつかのコード有効にすることができ

プラグインで

  • ...:

    Now to execute that function, you will need an event that will execute your function.

    (ワードプレス) Woocommerceでは、あなたの機能を実行するために使用できるいくつかの特定のイベントにトリガされaction hooksがたくさんあります。この場合、あなたの機能はフックされます(特定のイベントで実行する準備ができています)

    特定の注文のステータスを変更したい場合は、バックエンドの関連注文編集ページで行う方がよいでしょう。

    例:
    例えば顧客がorder-receivedエンドポイント(ありがとうページ)にチェックアウトした後、彼の注文を送信しているときに注文のステータスを変更することができます

    add_action('woocommerce_thankyou', 'custom_woocommerce_auto_complete_order'); 
    function custom_woocommerce_auto_complete_order($order_id) { 
        if (! $order_id) return; 
    
        // Get an instance of the WC_Order object 
        $order = wc_get_order($order_id); 
        // Change order status to "completed" 
        $order->update_status('completed'); 
    } 
    

    このコードは公式ですコードスニペット:Automatically Complete Orders

    これは、どのように動作するかを示す良い例です。あなたのケースではupdate_status()のようなWC_Order classメソッドを使用しています。

    今、このコードベースで、あなたはこの答えのように行動絞り込むことができます。受注に関連
    WooCommerce: Auto complete paid Orders (depending on Payment methods)


    を:How to get WooCommerce order details

  • +0

    ありがとうございました!今私はもっと理解しています。私は以下の問題を抱えています:私はwoocommerceからの私の注文をフルフィルするプログラムを書いた。 SQLを介してorder_statusを直接変更してcompletedにします。問題は、この方法で電子メールトリガがトリガされないことです。だから、データベースの新しいテーブルにすべてのフルフィルド注文を書いて、10分ごとにPHPページを開くcronジョブを追加することにしました。このPHPでは、私はテーブルからすべてのIDを取得し、それらのorder_statusを完了したいと思っていました。私のイベントは、そのページが開かれたことだけです。これをフックとしてどのように追加できますか? Philipp –

    +0

    @PhilippRitterこれに関連するメールを送信してください... – LoicTheAztec

    関連する問題