Суть вопрос в следующем: Пользователь вводит в поисковую строку номер 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…', '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>
Работает не правильно, все равно ищет с точками и ничего не находит, но в поисковой строке подменяет как надо, то есть надо два раза повторять поиск, а нужно сразу что бы искало исправленную строку!
Есть идеи?
Добавьте такие фильтры в 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' );
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники