У меня проблема с поиском по запросу, что означает, что я буду искать только сообщения с post_status = опубликовано. Проблема в том, что после добавления моих условий wordpress пишет «ИЛИ wp_terms.name LIKE% s%, которое отменяет все мои предыдущие условия. Как я могу удалить эту инструкцию или изменить ИЛИ в AND.
Я уже пробовал различные решения, включая posts_where, но условие "wp_terms.name LIKE% s% всегда остается.
Я добавил это условие в файл function.php моего шаблона WordPress для фильтрации поиска.
function.php
function nameFunction($query){
if (!is_admin() && $query->is_main_query()) {
if ($query->is_search()) {
$query->set( 'post_status', 'publish');
$query->set( 'post_type', 'lp_course');
$query->set('s', get_search_query());
$query->set('order', 'desc' );
}
}
}
add_action( 'pre_get_posts', 'nameFunction');
Это запрос на генерацию:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id LEFT JOIN wp_term_taxonomy ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id LEFT JOIN wp_terms ON wp_term_taxonomy.term_id = wp_terms.term_id WHERE 1=1 AND (((wp_posts.post_title LIKE '{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}cantieri{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}') OR (wp_posts.post_excerpt LIKE '{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}cantieri{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}') OR (wp_posts.post_content LIKE '{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}cantieri{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}'))) AND (wp_posts.post_password = '') AND wp_posts.post_type = 'lp_course' AND ((wp_posts.post_status = 'publish'))OR wp_terms.name LIKE '%cantieri%' GROUP BY wp_posts.ID ORDER BY wp_posts.post_title LIKE '{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}cantieri{49d63a129bd514e58a4ec329ce90100d6896c431356d4f358f3b347caaecea35}' DESC, wp_posts.post_date DESC LIMIT 0, 10
Это та часть, которая, как мне кажется, создает проблемы
AND wp_posts.post_type = 'lp_course' AND ((wp_posts.post_status = 'publish'))OR wp_terms.name LIKE '%cantieri%'
Я хотел бы удалить конечное условие или изменить его с помощью AND.
Может кто-нибудь мне помочь?