2017-12-18 10 views
1

以下のコードを使用して、Woocommerce "処理注文"と "注文完了"顧客メールの注文表の後にカスタムコンテンツを追加しようとしています。WooCommerceの顧客処理と注文完了メール通知のターゲット設定

お客様が出荷方法として「ローカルピックアップ」を選択した場合にのみ追加してください。

function local_pickup_extra_content_email($order, $is_admin_email) { 
    if ($is_admin_email) { 
     return; 
    } 

    if (ICL_LANGUAGE_CODE == "he" && strpos($order->get_shipping_method(), 'Local Pickup') !== false) { 
     echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>'; 
    } 
} 

add_action('woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 2 ); 

コンテンツは指定されたメールに追加されていません。 Woocommerce注文の管理ページから手動で送信された「Order Details/Invoice」の電子メールにのみ追加されます。

上記のコンテンツをどのように追加することができますか?私は間違って何をしていますか?
(電子メールテンプレートをテーマフォルダに上書きされていない)

答えて

1

これは簡単に欠けているフック引数$email、この方法によって、それらの電子メール通知をターゲットに行うことができます。

add_action('woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 4 ); 
function local_pickup_extra_content_email($order, $sent_to_admin, $plain_text, $email) { 
    // Only for "Processing Order" and "Order Completed" customer emails 
    if(! ('customer_processing_order' == $email->id || 'customer_completed_order' == $email->id)) return; 

    $lang = get_post_meta($order->id, 'wpml_language', true); 
    if ($lang == 'he' && && strpos($order->get_shipping_method(), 'Local Pickup') !== false) { 
     echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>'; 
    } 
} 

このコードはあなたのアクティブな子テーマ(またはテーマ)のfunction.phpファイル、またはすべてのプラグインファイルに入ります。

検査済みと


同様の答えに動作します:私は考えていない

ICL_LANGUAGE_CODE == "he" 

Add a custom text to specific email notification for local pickup Woocommerce orders

+0

ありがとうございました。 'ICL_LANGUAGE_CODE ==" he "' Woocommerceの電子メールを送信するときに 'ICL_LANGUAGE_CODE'が存在しないと思います。 これを修正するには、上記の行を次のように置き換えて、魅力的なように機能しました: '$ lang = get_post_meta($ order-> id、 'wpml_language'、true);' 'if($ lang == '彼' && ...){' –

+1

私の間違い、あなたは絶対に正しいです。私はあなたの答えに合格のチェックをしました。 –

1

これは、if文であるため、私のWPML条件で動作しませんでしたがWoocommerceが電子メールを送信すると、ICL_LANGUAGE_CODEが存在します。これを修正するために、上の質問のifステートメントを次のように置き換えました。これは魅力的なものでした。

$lang = get_post_meta($order->id, 'wpml_language', true); 
if ($lang == 'he' && && strpos($order->get_shipping_method(), 'Local Pickup') !== false) { 
    echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>'; 
} 
関連する問題