1

この回答からこのコードを改善して、完了した注文ステータスの電子メールに顧客のみにメッセージを表示し、他のユーザーの役割 (サブスクライバーなど) にはメッセージを表示しないようにしたいと思います。

そのコードは次のとおりです。

add_action( 'woocommerce_email_before_order_table', 'completed_order_mail_message', 20 );
function completed_order_mail_message( $order ) {
    if ( empty( $order->get_used_coupons() ) && $order->post_status == 'wc-completed' )
        echo '<h2 id="h2thanks">Get 20% off</h2><p id="pthanks">Thank you for making this purchase! Come back and use the code "<strong>Back4More</strong>" to receive a 20% discount on your next purchase! Click here to continue shopping.</p>';
}

どうすれば達成できますか?

ありがとう

4

1 に答える 1

3

完全な注文ステータスの電子メール通知でこのカスタム メッセージを有効にし、「顧客」ユーザー ロールのみを有効にするには、ユーザー ロールを取得するために、注文に関連するユーザー データを取得する必要があります。次に、条件で使用します。

コードは次のとおりです。

add_action( 'woocommerce_email_before_order_table', 'completed_order_mail_message', 20 );
function completed_order_mail_message( $order ) {

    // Getting order user data to get the user roles
    $user_data = get_userdata($order->customer_user);

    if ( empty( $order->get_used_coupons() ) && $order->post_status == 'wc-completed' && in_array('customer', $user_data->roles) )
        echo '<h2 id="h2thanks">Get 20% off</h2><p id="pthanks">Thank you for making this purchase! Come back and use the code "<strong>Back4More</strong>" to receive a 20% discount on your next purchase! Click here to continue shopping.</p>';
}

このコードは、アクティブな子テーマ (またはテーマ) の function.php ファイル、または任意のプラグイン ファイルにも含まれます。

このコードはテスト済みで、完全に機能します。

于 2016-10-11T12:53:51.460 に答える