Intereting Posts
wp_trash_post не стреляет Программно блокировать комментирование, ограничивая представление формы комментария шаблон страницы – неопределенная структура в исходном коде Не добавляйте фильтр содержимого на шаблон страницы Отправка пользовательских сообщений для подписчиков Easy Digital Download Pagination возвращает те же элементы на странице 2 Как добавить определенное меню на определенной странице или страницах Ссылка таксономии не работает (приводит к 404 страницам) вставить несколько записей в базу данных с использованием проблемы с циклом Редактирование навигационного меню? Пользовательский тип заголовка сообщения не работает в WordPress 3.4 Изменить код для отображения страницы вложения изображения Форма WordPress для отправки на пользовательский шаблон страницы не работает Пользовательский фильтр полей по ролям – WordPress WordPress Multisite ERR_TOO_MANY_REDIRECTS для всех сайтов, кроме первичных

Как исключить совпадение слова «класс» в поиске?

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

На сайте я помогаю управлять, поисковый термин «девушка» довольно заметен. К сожалению, это соответствует общему использованию «класса» в содержании многих, многих сообщений WP, что приводит к множеству нерелевантных результатов. Тем не менее, я по-прежнему хочу, чтобы сообщения со словом «класс» были в возможных совпадениях, я просто не хочу, чтобы он соответствовал «lass» для «class».

Вот три возможных сообщения:

1. <a href="http://img.wordpressask.com/posts/image-large.jpg"><img class="aligncenter size-full wp-image-1234" alt="Image" src="http://img.wordpressask.com/posts/image.jpg"" width="600" height="300" /></a> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum et veritatis pariatur deleniti excepturi beatae voluptatum aspernatur voluptates rerum numquam. 2. <a href="http://img.wordpressask.com/posts/image-large.jpg"><img class="aligncenter size-full wp-image-1234" alt="Image" src="http://img.wordpressask.com/posts/image.jpg"" width="600" height="300" /></a> Lass is lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum et veritatis pariatur deleniti excepturi beatae voluptatum aspernatur voluptates rerum numquam. 3. Lass is lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsum et veritatis pariatur deleniti excepturi beatae voluptatum aspernatur voluptates rerum numquam. 

Если бы я искал «lass», мне бы хотелось, чтобы результаты 2 и 3 были возвращены, но не результат 1.

Я видел отличные результаты в этих двух вопросах, но они не вполне соответствовали всем, что я ищу. Мы ценим любые предложения.

Вы можете попытаться использовать фильтр posts_search как это было предложено @Kaiser в первой приведенной вами ссылке. Вот одна идея:

 function filter_search($sql){ global $wpdb; if( strpos(get_query_var("s"),"lass") !== false AND strpos(get_query_var("s"),"class") === false ){ $sql .= " AND {$wpdb->posts}.post_title NOT LIKE '%class%'"; $sql .= " AND {$wpdb->posts}.post_content NOT LIKE '%class%'"; } return $sql; } add_filter( 'posts_search', 'filter_search'); 

чтобы проверить, содержит ли поисковый запрос lass а не class а затем модифицирует поисковый запрос, чтобы исключить class .

Изменение в SQL будет выглядеть так:

До:

 AND (((wp_posts.post_title LIKE '%lass%') OR (wp_posts.post_content LIKE '%lass%'))) 

После:

 AND (((wp_posts.post_title LIKE '%lass%') OR (wp_posts.post_content LIKE '%lass%'))) AND wp_posts.post_title NOT LIKE '%class%' AND wp_posts.post_content NOT LIKE '%class%' 

Обновить:

Можешь попробовать

  function filter_search($sql){ global $wpdb; if( strpos(get_query_var("s"),"lass") !== false AND strpos(get_query_var("s"),"class") === false ){ $sql .= " AND ( {$wpdb->posts}.post_content LIKE 'lass %'"; $sql .= " OR {$wpdb->posts}.post_content LIKE '% lass %'"; $sql .= " OR {$wpdb->posts}.post_content LIKE '% lass' )"; } return $sql; } add_filter( 'posts_search', 'filter_search'); 

если вы хотите настроить точное слово lass в сообщении.