2
私は卸売り顧客(wholesale_customer)のユーザー役割を持っています。完了した注文をマークすると、通知が顧客に送信されます。これは通常の顧客にとっては問題ありませんが、卸売顧客の通知を無効にする/削除したいと思います。特定のユーザーロールの注文ステータスの電子メール通知を送信しないようにします。
私がこれまで持っているもの:
function do_not_send_some_email_notifications(WC_Emails $wc_emails) {
$order = new WC_Order($order_id);
if ($order->user_id > 0) {
$user_id = $order->user_id;
$get_user_data = get_userdata($user_id);
$user_roles = $get_user_data->roles;
if (in_array('wholesale_customer', $user_roles)) {
remove_action('woocommerce_order_status_completed_notification', array($wc_emails->emails['WC_Email_Customer_Completed_Order'], 'trigger'));
}
}
}
add_action('woocommerce_email', 'do_not_send_some_email_notifications');
私はこれをテストしてきたが、それは働いていません。
誰かが私を正しい方向に向けることができれば、とてもうれしいでしょう。
ありがとうございました。
ご協力ありがとうございます。 Targeted_user_roleを持つ最初のビットのみがエラーを出しています(解析エラー:構文エラー、予期しない '=')。おそらくコードに小さなエラーがありますか? – PieterM
もう一度ありがとうございます。このコードをテストすると、ユーザーロール「wholesale_customer」を持つユーザーは、注文が完了とマークされても通知を受け取ります。 「管理者」を「wholesale_customer」に変更する必要がありますか? – PieterM
新しいコードを試しましたが、まだ動作していません。私は2つのアカウント(管理者と卸売顧客)で試してみました。どちらの場合も、完了した注文をマークした後に通知を受けました。他のプラグイン/コードと競合している可能性がありますか? – PieterM