Intereting Posts
Как отображать две категории блога в виде отдельных разделов на одной странице? Ограничить отображение сообщений самому плакату (в Back-end) Что происходит, когда два или более плагина используют один и тот же крючок? Создание пользовательских связей типа post Получить количество комментариев на странице Постоянная ссылка для пользовательских пост-типов в пользовательских таксономах не найдена Фото комментарий плагин Как я могу легко уменьшить размер установки WordPress от разработки до производства? Требуется функция woocommerce для получения списка корзин с элементами Получать пользовательский пул сообщений для страницы архива Как вы изменяете «post_parent» настраиваемого типа сообщений? Необходимо исключить пользователей без сообщений с моей страницы авторов Изменение местоположения wp_insert_post () Написание напоминаний в точное время Отображение в повторяющихся метабоксах с использованием CMB2

Медленный WP_Query с 'OR' на meta_query

По сути, я пытаюсь выполнить запрос с использованием фильтра для файлов args, которые загружаются в WP_Query () следующим образом:

public function filter_wp_query( $args, $template_slug ) { $args['post_type'] = 'post'; $args['search_post_title'] = isset( $args['s'] ) ? $args['s'] : ''; $args['meta_query'] = [ 'relation' => 'OR', [ 'key' => 'hide_thing', 'value' => '0' ], [ 'key' => 'hide_thing', 'compare' => 'NOT EXISTS' ] ]; add_filter( 'posts_where', function ( $where, &$wp_query ) { global $wpdb; if ( $search_term = $wp_query->get( 'search_post_title' ) ) { $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( $wpdb::esc_like( $search_term ) ) . '%\''; } return $where; }, 10, 2 ); return $args; } 

Это применяется к следующему фильтру:

 $recent_items_args = apply_filters( 'my_template_manager_recent_articles_args', $recent_items_args, $_GET['my-template'] ); 

Который подается в WP_Query следующим образом:

 $recent_items_query = new WP_Query( $recent_items_args ); 

Обычно этот запрос (без «meta_query») не требует времени и работает отлично. Кроме того, он отлично работает без проверки NOT NOT EXISTS. Но как только я добавлю «отношение» => ИЛИ вместе с проверкой NOT EXISTS, он замедляется вниз – до 12-15 секунд.

Есть ли другой / лучший способ сделать это, что не связано с огромным переопределением фактического выполняемого запроса?

Я рассмотрел установку мета-значения «hide_thing» для всех сообщений, если нет быстрого запроса для «NOT EXISTS», и это будет мой путь вперед, но я подумал, что попрошу вас, прекрасные люди, посмотреть, есть ли способ для изменения существующего мета запроса, чтобы он работал.

Заранее спасибо!

Solutions Collecting From Web of "Медленный WP_Query с 'OR' на meta_query"