Snow Monkey Formsで日本語が含まれないお問い合わせ内容を送信できないようにしたい

0
いいねをした人: 居ません
  • このトピックには2件の返信、2人の参加者があり、最後にhiroにより6ヶ月、 3週前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #139295
    hiro
    参加者
    9

    【お使いの Snow Monkey のバージョン】バージョン: 25.4.5
    【お使いの Snow Monkey Forms のバージョン】バージョン 6.4.0
    【お使いのブラウザ】Chrome
    【当該サイトのURL】

    ### 実現したいこと

    お問い合わせ内容に日本語が含まれない場合に、メールを送信できなくしたい。

    ### 発生している問題

    予期しない問題が発生しました。後でもう一度やり直すか、他の方法で管理者に連絡してください。

    とあり、メールに日本語が含まれている場合も動作しませんでした。

    ### 試したこと

    add_filter(
    	'snow_monkey_forms/spam/validate',
    	function( $is_valid_not_spam, $fields, $entry, $form_data ) {
    
    		$label = 'お問い合わせ内容'; // 検証するフィールドのラベル名
    
    		if ( $index = array_search( $label, array_column( $form_data['fields'], 'label' ) ) !== false ) {
    			$form_field = $form_data['fields'][$index];
    			$field_id = $form_field['id'];
    			$field_value = isset( $fields[$field_id] ) ? $fields[$field_id] : '';
    
    			if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $field_value ) ) {
    				return sprintf( '「%s」は、日本語で入力してください。', $label );
    			}
    		}
    
    		return $is_valid_not_spam;
    	},
    	10,
    	4
    );

    上記でうまくいきませんでした。

    お休みのところ恐縮ですが、ご対応はお休みあけで全然構いませんので、どうぞよろしくお願いいたします。

    0
    いいねをした人: 居ません
    #139307
    アバター画像キタジマ タカシ
    参加者
    2421

    まず、snow_monkey_forms/spam/validate フィルターフックは現状だと引数は spam かどうかの1つだけになります。なので、提示いただいたコードのように4つの引数を受け取ることはできません。そして、返り値も spam かどうか、つまり truefalse だけなので sprintf( '「%s」は、日本語で入力してください。', $label ) のようにメッセージを返すことはできません。

    ということで、snow_monkey_forms/spam/validate で送信内容を受け取ったり、メッセージを返すことはできないのですが、このフックで送信内容をもとに spam かどうか判定するのは結構使えるなと思うので、ここには送信内容を取得できる引数を追加したほうが良さそうだなと思いました!

    で、現状でできる方法を考えてみました。メッセージを返す方法は思いつかなかったのですが、送信内容をもとに管理者宛メールを送信するかどうかはカスタマイズできるので、ちょっとコードを書いてみました。

    下記のコードを My Snow Monkey プラグインか子テーマの functions.php に追加してみてください。対象とする項目にあわせて適宜改変してください!

    add_filter(
    	'snow_monkey_forms/administrator_mailer/is_sended',
    	function( $is_sended, $responser ) {
    		$message = $responser->get( 'message' ); // 対象の項目の name を指定
    
    		if ( ! preg_match( '/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]/u', $message ) ) {
    			return false; // 管理者宛メールの送信に失敗させる
    		}
    
    		return $is_sended;
    	},
    	10,
    	2
    );
    0
    いいねをした人: 居ません
    #139308
    hiro
    参加者
    9

    キタジマ様

    ご回答ありがとうございます!お休みのところ失礼致しました。

    いただいたコードで意図した内容が実現できました。本当にありがとうございました。

    外国語のスパムで困っていたので大変助かりました。迅速なご回答をくださり、

    誠に感謝いたします。お身体に気をつけて開発頑張ってください!

    1
    いいねをした人:
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • トピック「Snow Monkey Formsで日本語が含まれないお問い合わせ内容を送信できないようにしたい」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。