Я изо всех сил пытаюсь найти простой способ поиска WordPress, чтобы также искать в описании категорий сообщений. Я нашел несколько тем, но не нашел реального ответа.
Дело в том, что пользователь может также вводить то, что он ищет, + название категории (например, «Mario Nintendo 64», где «Nintendo 64» — это название категории. На данный момент он не возвращает никаких результатов, что не чувствует себя хорошо).
Мне нужно искать в term_taxonomy.description, так как у категорий есть псевдонимы, которые я ввожу в это поле (например: «Nintendo 64, N64 и т. д.»)
Вот что я придумал.
function custom_posts_join ($a) {
global $wpdb;
return $a . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_id) ";
}
function custom_posts_where ($a) {
global $wpdb;
return $a . " AND $wpdb->term_taxonomy.taxonomy = 'category'";
}
add_filter('posts_join', custom_posts_join );
add_filter('posts_where', custom_posts_where );
Тем не менее, мне нужно иметь возможность интегрировать OR (term_taxonomy.description LIKE '%A%')
в поиск прямо сейчас, запрос sql ищет только
(posts.post_title LIKE '%A%')
OR (posts.post_excerpt LIKE '%A%')
OR (posts.post_content LIKE '%A%')
Кроме того, можно ли добавить DISTINCT, чтобы он не возвращал одно и то же сообщение несколько раз, основываясь на том факте, что сообщения могут принадлежать к нескольким категориям.
Я действительно не знаю, на правильном ли я пути, но я застрял. Также мне интересно, насколько тяжело, что может показаться небольшой корректировкой, это окажется на сервере? Я не занимался разработкой в течение многих лет, и теперь я вернулся к этому, и я не уверен, что это сделает поиск слишком тяжелым. Является ли INNER JOIN лучшим способом?
Есть ли другой способ, которым я мог бы обрабатывать поиск для поиска в описании категорий сообщений.