[WordPress] 2 つのありがとうアクション woocommerce twilio を使用する場合

スポンサーリンク

質問

woocommerce thankyou.php ファイルでは 2 つのありがとうアクション

<?php do_action( 'woocommerce_thankyou_' . $order->payment_method, $order->id ); ?>
<?php do_action( 'woocommerce_thankyou', $order->id ); ?>

私のコードに functions.php ファイルに 1 つのアクションを加えた

add_action( 'woocommerce_thankyou', 'custom_woocommerce_complete_order_sms' );
function custom_woocommerce_complete_order_sms( $order_id ) {
        global $woocommerce;
        if ( !$order_id )
        return;
        $order = new WC_Order( $order_id );

        $product_list = '';
        $order_item = $order->get_items();

        foreach( $order_item as $product ) {
            $prodct_name[] = $product['name']."x".$product['qty'];

        }

        $product_list = implode( ',', $prodct_name );
        $order_amount = get_post_meta( $order_id, '_order_total', true );






    // Step 1: Download the Twilio-PHP library from twilio.com/docs/libraries, 
    // and move it into the folder containing this file.
    require "twilio-php-master/Services/Twilio.php";

    // Step 2: set our AccountSid and AuthToken from www.twilio.com/user/account
    $AccountSid = "xxxx";
    $AuthToken = "xxx";

    // Step 3: instantiate a new Twilio Rest Client
    $client = new Services_Twilio($AccountSid, $AuthToken);

    // Step 4: make an array of people we know, to send them a message. 
    // Feel free to change/add your own phone number and name here.

    $name = "Test";
    $number = "xxxx";
    // $number is a phone number above, and 
    // $name is the name next to it

        $sms = $client->account->messages->sendMessage(

        // Step 6: Change the 'From' number below to be a valid Twilio number 
        // that you've purchased, or the (deprecated) Sandbox number
            "+44xxxxxx", 

            // the number we are sending to - Any phone number
            $number,

            // the sms body
            "Hey $name, there is a new  Order, the order is, $product_list, the order ID is $order_id and the total amount payable is $order_amount"
        );

        // Display a confirmation message on the screen
        //echo "Sent message to $name";
    }

これは順序でメッセージを送信、メッセージは送信 2 回多くの時間、2 つのためにこれは woocommerce テンプレート ファイル内でありがとうございますアクション?

ファイルに関するいくつかのドキュメントを見つけることを試みたが、本当に多くを見つけることができませんでした

誰もが正しい方向に私を指す場合は 1 と 1 を削除することができますを削除しても安全かわからない

も奇妙な方法、それはすべての時間を発生しません、私は別のオプションとログへの書き込みをして、なぜ見る instiagted それか

答え

この 1 つはこれらが実際に 2 つの全く異なるフックので、当てになりません。1 つアンダー スコア文字で終わるし、ドット見付けると支払方法を保持する変数。このフックは動的で、

woocommerce_thankyou_stripe

のように解決されますまたは

woocommerce_thankyou_paypal

、等

私は完全に確実ではないなぜが、WooCommerce は時々 複数回 1 つチェック アウトの thankyou.php テンプレートを読み込みます。これに対抗する最善の方法はおそらくまだか SMS を設定したかどうか確認するセッション変数を設定します。このチェックするようにコードを更新しました:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_complete_order_sms' );
function custom_woocommerce_complete_order_sms( $order_id ) {

    // Check for the existence of a session, and start one if it's not been started yet
    // Note that session_status() is only available in PHP 5.4.0+
    if ( session_status() == PHP_SESSION_NONE ) {
        session_start();
    }

    // Check for the existnece of a session variable indicating we've sent the SMS, which we set at the end
    // Abort the function if we've already sent the SMS
    if (isset($_SESSION['is_sms_sent'])) {
        return;
    }

    global $woocommerce;
    if ( !$order_id )
        return;
    $order = new WC_Order( $order_id );

    $product_list = '';
    $order_item = $order->get_items();

    foreach( $order_item as $product ) {
        $prodct_name[] = $product['name']."x".$product['qty'];

    }

    $product_list = implode( ',', $prodct_name );
    $order_amount = get_post_meta( $order_id, '_order_total', true );

    // Step 1: Download the Twilio-PHP library from twilio.com/docs/libraries,
    // and move it into the folder containing this file.
    require "twilio-php-master/Services/Twilio.php";

    // Step 2: set our AccountSid and AuthToken from www.twilio.com/user/account
    $AccountSid = "xxxx";
    $AuthToken = "xxx";

    // Step 3: instantiate a new Twilio Rest Client
    $client = new Services_Twilio($AccountSid, $AuthToken);

    // Step 4: make an array of people we know, to send them a message.
    // Feel free to change/add your own phone number and name here.

    $name = "Test";
    $number = "xxxx";
    // $number is a phone number above, and
    // $name is the name next to it

    $sms = $client->account->messages->sendMessage(

    // Step 6: Change the 'From' number below to be a valid Twilio number
    // that you've purchased, or the (deprecated) Sandbox number
        "+44xxxxxx",

        // the number we are sending to - Any phone number
        $number,

        // the sms body
        "Hey $name, there is a new  Order, the order is, $product_list, the order ID is $order_id and the total amount payable is $order_amount"
    );

    // Set our session variable after we've sent the SMS
    $_SESSION['is_sms_sent'] = true;

    // Display a confirmation message on the screen
    //echo "Sent message to $name";
}

http://stackoverflow.com/questions/32234681/two-thankyou-actions-in-woocommerce-when-using-twilio

スポンサーリンク

Leave a Reply