Оставить только буквы и цифры в поисковом запросе сайта!

138
25 января 2018, 20:05

Суть вопрос в следующем: Пользователь вводит в поисковую строку номер 13.6АВ54:00%21 и жмет поиск!

Задача сайта перехватить эту строку, удалить лишние точки и символы, оставить только буквы и цифры: вот так - 136АВ540021!

В случае с WordPress $st = preg_replace ("/[^a-zA-ZА-Яа-я0-9\s]/","",$st); в этой форме

<form role="search" method="get" class="woocommerce-product-search" action="<?php echo esc_url( home_url( '/' ) ); ?>"> 
  <label class="screen-reader-text" for="woocommerce-product-search-field-<?php echo isset( $index ) ? absint( $index ) : 0; ?>"><?php _e( 'Search for:', 'woocommerce' ); ?></label> 
  <input type="search" id="woocommerce-product-search-field-<?php echo isset( $index ) ? absint( $index ) : 0; ?>" class="search-field" placeholder="<?php echo esc_attr__( 'Search products&hellip;', 'woocommerce' ); ?>" value="<?php  echo get_search_query(); ?>" 
    name="s" /> 
  <input type="submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'woocommerce' ); ?>" /> 
  <input type="hidden" name="post_type" value="product" /> 
</form>

Работает не правильно, все равно ищет с точками и ничего не находит, но в поисковой строке подменяет как надо, то есть надо два раза повторять поиск, а нужно сразу что бы искало исправленную строку!

Есть идеи?

Answer 1

Добавьте такие фильтры в functions.php:

function clean_search_string( $s ) {
    $s = preg_replace( "/[^a-zA-ZА-Яа-я0-9\s]/", '', $s );
    return $s;
}
function get_search_query_filter( $query_var ) {
    $query_var = clean_search_string( $query_var );
    return $query_var;
}
add_filter( 'get_search_query', 'get_search_query_filter' );
function request_filter( $query_vars ) {
    if ( isset( $query_vars['s'] ) ) {
        $query_vars['s'] = clean_search_string( $query_vars['s'] );
    }
    return $query_vars;
}
add_filter( 'request', 'request_filter' );
READ ALSO
Отправка почтовых писем через smtp Яндекса

Отправка почтовых писем через smtp Яндекса

Доброго времени суток, давно ищу простой и понятный код для отправки писем через smtpВезде где не искал, предлагают или огромную библиотеку...

146
PHP скрипт завершается без причины

PHP скрипт завершается без причины

Имеется PHP cronjob скрипт, который импортирует данные в БД WordPressДанных много, ориентировочное время выполнения должно быть 1

150
Парсинг Amazon Review средствами PHP или JavaScript

Парсинг Amazon Review средствами PHP или JavaScript

Пытаюсь сделать функциональность в WordPress которая бы парсила по URL определенное ревью с Amazon и потом добавляла его ко мне на сайтНе могу спарсить

140
Нужен прогрес бар PHP

Нужен прогрес бар PHP

Делаю рассылку из базы, получаю 50 000 id и через

213