eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Кастомизация пойска: указать минимальное кол-во символов чтобы поиск начал работать.

Избитая тема, но есть одна проблема которую хотелось бы решить..

Если вбить на любом сайте wp (в т.ч. wp-kama) в строку пойска одну букву, то выдаст 2000 страниц. Подскажите кто разбирается как не пропускать короткие запросы через пойск. Желательно без редиректа.

0
mi13
2 года назад 88
  • 2
    Kama 9771

    На хуке parse_query можно попробовать проверить $this->query['s'] и заменить его на пустую строку. Если будут баги может на слово, которое точно не будет найдена нигде.

    mi13 2 года назад

    Вышло так..

    function Parse_search( $query ) {
    if( isset( $query->query['s'] ) ) {
    	if( strlen( $query->query['s'] ) < 8 ) {
    		$query->set('s','АААААААА');
    	}
    }
    }
    add_action( 'parse_query', 'Parse_search' );

    спасибо

    mi13 2 года назад

    Еще обнаружил опытным путем что search все равно проходит (но при этом заголовок пустой (если $query->set('s','');) а портянка все равно есть (при этом в ней почему то вылезли хтмл сущьности). Решил так..

    if( get_search_query() ) :
    	if ( have_posts() ) {
    		/*бла бла бла*/
    	else :
    		get_template_part( 'template-parts/content', 'none' );
    endif;

    в search php

    mi13 2 года назад

    При таком методе пагинация (1,2,3..далее) все равно вылазит, поэтому решил так, т.к. не нашел как сбросить по другому..

    function SearchFilter($query) {
    	if ( isset( $query->query['s'] ) && $query->is_main_query() ) {
    		if( strlen( $query->query['s'] ) >= 8 ) {
    			$query->set( 'post_type', array('post','english') );
    			$query->set( 'sentence', 1 );
    		} else {
    			if( !is_admin() ) $query->set( 'post_type', 'empty' );
    		}
    	}
    	return $query;
    }
    add_filter('pre_get_posts','SearchFilter');
    Комментировать
  • 1
    kolshix 779 paxtoy.com

    способ для честных посетителей: добавить в форму "minlength"

    <input type="text" minlength="3"
    <input type="submit" id="searchsubmit"

    через урл конечно обходится

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация