2017-02-04 10 views
0

私はこのアクションを使って正常に完了した新しい注文が行われた場合にサブスクリプションプラグインに接続したいと考えています。 woocommerce_checkout_subscription_createdそのアクションの機能の中に、私はとても好きですし、私がしようとしている顧客に外に出た電子メールを変更したい:私が言ったようにwoocommerceの注文電子メールのフックをサブスクリプションからお支払い

<?php 
    function subscription_created($subscription){ 

    add_action('woocommerce_email_before_order_table','my_offer',20); 
    $order = $subscription->order; 

    function my_offer($order){ 

     echo "<h2>Your Trial Offer</h2>"; 
     echo "<p>Your subscription to this product entitles you to a free blah blah blah...</p>"; 

    } 

    return $var; 

} 
add_action('woocommerce_checkout_subscription_created','subscription_created'); 
?> 

、作成したサブスクリプション火災のためのアクションは、(私は出力をログに記録しました$subscriptionが正常に終了しました)。電子メールアクションが機能していません。

私はこれがスコープと関係があると推測していますが、わかりません。いかなる考えも認められるだろう。

答えて

0

アクション内でアクションを実行することはできません。

あなたはこのアクションのコードをチェックした場合、あなたは下記にアクセスする必要があり:

do_action('woocommerce_email_before_order_table', $order, $sent_to_admin, $plain_text, $email); 

をそのため、あなたはおそらくwoocommerce_checkout_subscription_createdにフックとだけwoocommerce_email_before_order_tableを使用することができませんでした。

$orderがサブスクリプションであるかどうかを照会し、それに応じて出力を変更することができます。

add_action('woocommerce_email_before_order_table', function($order, $sent_to_admin, $plain_text, $email) { 
    if (function_exists('wcs_order_contains_subscription')) { 
     if (wcs_order_contains_subscription($order->ID)) { 
      // Do what you need to do 
     } 
    } 
}, 10, 4); 
関連する問題