-
投稿者投稿
-
2020年2月6日 12:11 #5645
FirstElement 宮澤
キーマスターキーワード検索時、入力する単語数を制限する場合は下記をお試しください。
以下のjQueryのコードを、footer.phpのwp_footer()より後に記述し、検索フォームを設置するページ内で読み込まれるようにしてください。
// 設定値 var target = 's_keyword_5'; // フリーワード欄のname属性 var words = 2; // 許容する単語数 var message = '単語は' + words + '個まで入力できます'; // 初期化 var count = 0; var input = ''; jQuery( 'input[name=' + target + ']' ).on( 'keydown', function (e) { try { // 設定個数のspaceが入力後、space,backspace,delete以外の文字が入力されたらalert表示 if ( words <= count && ! ( 32 === e.keyCode || 8 === e.keyCode || 46 === e.keyCode ) ){ throw new Error( message ); } // spaceキー入力でカウントを増やす if ( 32 === e.keyCode ) { count++; } // backspace, deleteキー if ( e.keyCode === 8 || e.keyCode === 46 ) { // inputフィールドの値 var input = jQuery(this).val(); // inputフィールドの文字数 var textLength = input.length; // 最後尾側からspaceを探し、ヒットしたらカウントを減らす if ( input.indexOf( ' ', textLength - 1 ) >= 0 ) { count--; } // デバッグ用 //console.log( 'inputフィールドの文字数: ' + textLength ); //console.log( '検索開始位置: ' + ( textLength - 1 ) ); // 0からカウント //console.log( 'spaceの出現位置: ' + input.indexOf( ' ', textLength - 1 ) ); //console.log( 'spaceの数: ' + count ); } } catch( e ) { alert( e.message ); } });
「設定値」の「target」には、設置した検索フォームのキーワード検索欄のname属性を記述してください。
「words」には許可する単語数を指定してください。
「massage」には指定より多く単語を入力した際のメッセージを記述します。以上で、例えば3個以上単語を入力するとダイアログで警告が表示されるように設定できます。
キーワード検索で特にカスタムフィールドを複数単語で検索をかけると非常に負荷がかかりますので、このような方法で抑制する方法もあります。-
このトピックは
FirstElement 宮澤が2年、 10ヶ月前に変更しました。
-
このトピックは
FirstElement 宮澤が2年、 10ヶ月前に変更しました。
-
このトピックは
-
投稿者投稿
1件の投稿を表示中 - 1 - 1件目 (全1件中)
- このトピックに返信するにはログインが必要です。