Front Page フォーラム 使い方全般 フリーワード検索の単語数を限定する

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • 投稿者
    投稿
  • #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個以上単語を入力するとダイアログで警告が表示されるように設定できます。
    キーワード検索で特にカスタムフィールドを複数単語で検索をかけると非常に負荷がかかりますので、このような方法で抑制する方法もあります。

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • このトピックに返信するにはログインが必要です。

FE Advanced Search

¥59,800

  • サイト数無制限
  • 技術サポート回数無制限
  • 将来アップデート無料

「こんな検索できる?」「PHPやCSS詳しくないのだけど…」など、わからないことやご不安がありましたらお気軽にご相談ください。