Поисковый запрос Wordpress, как изменить SQL - PullRequest
0 голосов
/ 04 июня 2019

У меня проблема с поиском по запросу, что означает, что я буду искать только сообщения с 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.

Может кто-нибудь мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...