Я настроил поисковый запрос так:
<?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();
?>
Это прекрасно работает, за исключением случаев, когда я ищу пост, который содержит пунктуацию в заголовке. Например, если заголовок «Книга Марка» с использованием «Марк» и «Метки», оба результата не возвращают.
Если я просто выполню поиск «отметка», он появится, но я хочу, чтобы любое из приведенных выше ключевых слов также получило сообщение.
Есть ли что-то простое, что я упускаю, чтобы сделать это совместимым с пунктуацией?
get_search_query () по умолчанию передает данные в esc_attr (), чтобы гарантировать, что это безопасно для размещения в атрибуте html. если вы хотите отключить esc_attr (), попробуйте этот код,
$s = get_search_query( false );
может быть, это поможет вам
Вы можете попробовать это следующим образом:
$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
,
Код протестирован и работает.
Надеюсь это поможет!