2017-02-07 5 views
0

Я создал поисковый запрос, как это:Создание поискового запроса 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(); 
?> 

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

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

Есть ли что-то простое, что мне не хватает, насколько это совместимо с пунктуацией?

+0

попробуйте заменить '' s '=> $ s, 'this' 's' => addslashes ($ s),'. –

ответ

1

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

$s = get_search_query(false); 

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

+0

Спасибо. Это меня на полпути. В моем первоначальном примере с именем «Книга Марка» ... с этим изменением теперь выполняется поиск «метки», но если я опускаю апостроф и выполняю поиск с помощью «меток», я до сих пор не получаю никаких результатов. – Koda

0

Вы можете попробовать это таким образом:

$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

Спасибо за помощь! Как и другой ответ, это делает половину этого для меня. Для почтового имени «Mark's Book» этот код теперь будет работать с поисковым термином «mark», но если я ищу без апострофа, «метки», он все равно не даст никаких результатов. – Koda

 Смежные вопросы

  • Нет связанных вопросов^_^