Поддержка Проблемы и решения Поиск WordPress – как задать минимально необходимое количество символов

  • Доброго времени суток.
    Я активно гуглил, но ничего не нашёл. Как задать минимальное количество символов в запросе, при котором поиск бы осуществлялся. А то сейчас никакого ограничения нет и если нажать на кнопку поиск (или в адресной строке указать site.ru/?s=), то с пустым запросом отображает вообще все посты сайта в результатах поиска.
    Другими словами, начинать поиск, если больше трёх символов в запросе, а если меньше, то выводить соответствующее сообщение – «слишком короткий поисковый запрос, введите минимум три символа».
    Было бы замечательно, если бы это реализовывалось решением в коде (для functions.php), т.к. просмотренные мной плагины поиска добавляют множество других возможностей, которые совершенно не требуются, а сайт нагружают, из-за того, что поиск сам по себе ресурсоёмкий, а тут дополнительная ненужная нагрузка…

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Хотя бы вот так на инпут прописать уже лучше станет
    <input type=»text» minlength=»3″ required>

    SaW_3D
    Спасибо за рекомендацию, но всё-таки хотелось бы более основательного решения.

    пример формы:

    
    <form id="myform">
    <label for="field">Required, minimum length 17: </label>
    <input type="text" class="" id="" name="field5">
    <br/>
    <br/>
    <input type="submit" value="Validate!">
    </form>
    

    проверяем:

    
    <script>
    // just for the demos, avoids form submit
    jQuery.validator.setDefaults({
      debug: true,
      success: "valid"
    });
    $( "#myform" ).validate({
      rules: {
        field5: {
          required: true,
          minlength: 17
        }
      }
    });
    </script>
    

    это отсюда — https://stackoverflow.com/questions/34838477/limit-minimum-characters-in-wordpress-themplate-default-search

    Flector
    Спасибо за ответ, но здесь также осуществляется поверка на стороне браузера, а как сделать, чтобы оная осуществлялась на стороне сайта? Неужели при обширном количестве хуков в WordPress нет подходящего для этого?

    на стороне сервера сделать проще, только это лишние телодвижения для пользователя. например, в search.php можно вставить:

    
    // Get the query string
    $query = get_search_query();
    // if the first & last char is space, rip them
    $query = trim($query);
    // if there are more than one space, rip to one space
    $query = preg_replace('/\s\s+/', ' ',$query);
    // if chars count is less than  3, redirect them to homepage
    if (strlen($query)<3){
    wp_redirect( home_url() ); 
    exit; 
    }
    

    (или в адресной строке указать site.ru/?s=)

    Кто будет вот так осуществлять поиск из пользователей?

    <input type=»text» minlength=»3″ required>

    Почему вам такое решение не нравится? Всё элементарно и без js и без лишнего мусора. На стороне клиента решается ДА, а как должно быть? Человек вводит символы, это отправляется на проверку ajax-ом и присылается обратный ответ — это т.е. больше нравится?

    Flector
    Спасибо. Правда тут нет сообщения, но его можно будет вписать с помощью того же wp_die

    SaW_3D
    Те же, кто и жмут кнопку поиск с пустой кнопкой запроса. Может боты, может конкуренты.. но судя по метрике, такие есть.

    Я с помощью плагина скрыл некоторые статьи с главной, наверное потому и такое поведение.

    <input type="text" pattern=".{3,}" required title="Минимум 3 символа" />

    Вот лучше вариант, форма не отправится пустой из-за required, а из-за pattern не отправится при менее 3 символах.

    А если кто-то вводит именно в URL ?s= как Вы писали, то тогда как человек писал на странице search.php проверять на число символов запрос, и редиректить обратно.

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Поиск WordPress – как задать минимально необходимое количество символов» закрыта для новых ответов.