Создание поискового запроса WordPress, который игнорирует пунктуацию?

Я настроил поисковый запрос так:

<?php
$s = get_search_query();
$args = array(
'post_type' => array('post'),
'posts_per_page' => '10',
'order' => 'DESC',
'orderby' => 'date',
's' => $s,
'paged' => $paged
);
$query_search = new WP_Query($args);
if ($query_search->have_posts())
{
while ($query_search->have_posts())
{
$query_search->the_post();
}
}
wp_reset_postdata();
?>

Это прекрасно работает, за исключением случаев, когда я ищу пост, который содержит пунктуацию в заголовке. Например, если заголовок «Книга Марка» с использованием «Марк» и «Метки», оба результата не возвращают.

Если я просто выполню поиск «отметка», он появится, но я хочу, чтобы любое из приведенных выше ключевых слов также получило сообщение.

Есть ли что-то простое, что я упускаю, чтобы сделать это совместимым с пунктуацией?

1

Решение

get_search_query () по умолчанию передает данные в esc_attr (), чтобы гарантировать, что это безопасно для размещения в атрибуте html. если вы хотите отключить esc_attr (), попробуйте этот код,

$s = get_search_query( false );

может быть, это поможет вам

1

Другие решения

Вы можете попробовать это следующим образом:

$s = get_query_var('s');
$s = addslashes($s); //<-- even if you remove this the query will work
$args = array(
'post_type' => array('post'),
'posts_per_page' => '10',
'order' => 'DESC',
'orderby' => 'date',
's' => $s,
'paged' => $paged
);
$query_search = new WP_Query($args);
print_r($query_search->posts);

Пожалуйста, обратите внимание: я предположил, что строка запроса доступна s,
Код протестирован и работает.
Надеюсь это поможет!

0

По вопросам рекламы [email protected]