金額でクーポンを制限する方法

はじめに

指定した金額に基づいてクーポンを制限する方法に興味がありますか?このチュートリアルでは、PHPアクションを利用して、クーポンの値が設定されたしきい値以下の場合にクーポンが処理されないようにするプロセスをご案内します。

デフォルトでは、任意の金額に対してパーセンテージまたはフラットレートのいずれかの形式でクーポンを作成するオプションがあります。しかし、間違って75%ではなく.75と入力してしまったらどうでしょうか?この小さなコードスニペットを使えば、フォーム送信時のこのようなエラーを避けることができます。

クーポンの使い方について詳しくは、こちらのお役立ちガイドをご覧ください

クーポンの作成

まず、クーポンを作成しましょう。このチュートリアルでは、一律0.75のクーポンを作成します。これはデモンストレーションのためであり、これから追加するスニペットがバリデーションにどのように役立つかを強調するためです。

新しいクーポンを作成するには、WPForms " Payments " Couponsに移動し、Add New Couponをクリックします。名前]フィールドにクーポンの名前を入力します。

次に、コードフィールドにクーポンコードを手入力するか、コード生成ボタンをクリックしてWPFormsにコードを作成してもらいます。金額欄には「.75」と入力し、ドロップダウンから通貨記号を選択してください。

通貨記号を選択することで、パーセンテージではなく定額割引を利用することになる。

このチュートリアルでは、日時を設定しないので、スクロールダウンして、このクーポンを使用したいフォームを選択し、[クーポンを保存]をクリックして変更を保存します。

クーポンを制限するためには、まず新しいクーポンを作成しなければならない。

フォームの作成

クーポンの設定が完了したら、いよいよフォームを作成します。フォームの作成方法については、こちらのステップバイステップガイドをご覧ください

フォームを作成し、フィールドを追加する

クーポンフィールドを追加すると、クーポンがすでに割り当てられていることがわかります。

クーポン・フィールドを追加すると、許可されたクーポンがすでに割り当てられていることに注意してください。

スニペットの追加

いよいよスニペットを追加します。スニペットを追加する方法や場所についてヘルプが必要な場合は、こちらのチュートリアルをご覧ください

/*
 * Do not allow to submit coupons lower than 1.00.
 *
 * @link https://wpforms.com/developers/how-to-restrict-coupons-by-amount/
*/
 
function wpf_discard_low_coupons( $field_id, $field_submit, $form_data ) {
 
    $coupon = wpforms_coupons()->get( 'repository' )->get_coupon_by_code( $field_submit );
 
    if ( $coupon === null ) {
        return;
    }
 
    $currency = wpforms_get_currency();
 
    if ( $coupon->get_discount_type() === 'flat' && (float) $coupon->get_discount_amount() <= 1.00 ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = sprintf( /* translators: %s - Currency code name. */
            esc_html__( 'Coupon amount is less that 1.00 %s. Please, use another one.', 'your-translation-domain' ),
            $currency
        );
    }
}
add_action( "wpforms_process_validate_payment-coupon", 'wpf_discard_low_coupons', 10, 3 );

これだけで、訪問者がそのクーポンを使用するたびに、フォームを送信することができなくなります。

このスニペットを使用してクーポンを制限すると、クーポンが使用されたときにフォームにエラーが表示されます。

アクション・リファレンス:wpforms_process_validate_payment-coupon