はじめに
指定した金額に基づいてクーポンを制限する方法に興味がありますか?このチュートリアルでは、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