Intereting Posts
Как правильно запросить admin-ajax.php, когда URL-адрес WordPress и URL-адрес сайта различны? Ошибка при использовании succesfull wp_remote_post Каков правильный способ включения моих новых функций и скриптов в WordPress? Удалить сообщения Как использовать настраиваемое поле с add_rewrite_rule ()? Плагин Подробнее За исключением необработанного SQL, могу ли я запросить несколько метаданных вложений, имеющих данный массив? как get_term_by знает, какой термин следует возвращать, когда один и тот же термин появляется дважды в иерархической таксономии? Лучший способ настроить «nav-menu-template.php» для добавления <input>, если «link_before» – «checkbox», Обрезать изображение после загрузки на пользовательскую страницу учетной записи Опубликовать публикацию в будущем дату автоматически Способ автоматического обновления плагинов с помощью cron? Какой самый идиоматический способ позволить клиентам редактировать фразы в HTML? Где отредактировать шаблон, который генерирует код для левой стороны боковой панели dynamic_sidebar в теме Understrap? Показать полное дерево категории за год со всеми заголовками сообщений?

Большой выбор времени запроса OR OR

Я работаю над плагином календаря wordpress и сталкивается с проблемой с настраиваемыми полями. Я могу сделать два отдельных запроса для повторных событий и один для статических событий, но когда я пытаюсь объединить их, мои сценарии обрабатываются до тех пор, пока сервер не выйдет из строя и не перезапустит mysql …

$args = array( 'numberposts' => -1, 'post_type' => 'events', 'meta_query' => array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'calendar', 'value' => $cid, 'compare' => '='), array( 'key' => 'event_date', 'value' => $startQuery, 'compare' => '>=' ), array( 'key' => 'event_date', 'value' => $endQuery, 'compare' => '<=' ), array( 'key' => 'does_this_event_repeat', 'value' => '1', 'compare' => '='), array( 'key' => 'event_category', 'value' => '"'.$category.'"', 'compare' => 'LIKE'), ), array( 'relation' => 'AND', array( 'key' => 'calendar', 'value' => $cid, 'compare' => '='), array( 'key' => 'event_date', 'value' => $endQuery, 'compare' => '<=' ), array( 'key' => 'repeat_until', 'value' => $startQuery, 'compare' => '>=' ), array( 'key' => 'does_this_event_repeat', 'value' => '1', 'compare' => '>'), array( 'key' => 'event_category', 'value' => '"'.$category.'"', 'compare' => 'LIKE') ), ) ); $the_query = new WP_Query( $args ); 

ОБНОВИТЬ:

Пожалуйста, помогите мне разобраться, почему верх не работает, но код ниже. Я взял точный код и разбил его на два запроса, а затем объединил их в один.

 $static = array( 'numberposts' => -1, 'post_type' => 'protean_event', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'calendar', 'value' => $cid, 'compare' => '='), array( 'key' => 'event_date', 'value' => $startQuery, 'compare' => '>=' ), array( 'key' => 'event_date', 'value' => $endQuery, 'compare' => '<=' ), array( 'key' => 'does_this_event_repeat', 'value' => '1', 'compare' => '='), array( 'key' => 'event_category', 'value' => $category, 'compare' => 'LIKE'), ) ); $repeating = array( 'numberposts' => -1, 'post_type' => 'protean_event', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'calendar', 'value' => $cid, 'compare' => '='), array( 'key' => 'event_date', 'value' => $endQuery, 'compare' => '<=' ), array( 'key' => 'repeat_until', 'value' => $startQuery, 'compare' => '>=' ), array( 'key' => 'does_this_event_repeat', 'value' => '1', 'compare' => '>'), array( 'key' => 'event_category', 'value' => $category, 'compare' => 'LIKE'), ) ); $query1 = new WP_Query($static); $query2 = new WP_Query($repeating); //create new empty query and populate it with the other two $wp_query = new WP_Query(); $wp_query->posts = array_merge( $query1->posts, $query2->posts ); //populate post_count count for the loop to work correctly $wp_query->post_count = $query1->post_count + $query2->post_count; 

Solutions Collecting From Web of "Большой выбор времени запроса OR OR"

Прежде всего, все, что связано с LIKE просто не может быть быстрым. Если вы хотите быстрые запросы, избегайте LIKE .

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

Теперь почему сбою сервера трудно сказать, но большую часть времени это симптом для исчерпания памяти. Вопрос здесь в том, есть ли у mySQL нехватка памяти или на стороне PHP. В любом случае запрос на несвязанное количество результатов сделает это для вас, когда у вас будет много результатов.

Проблема заключалась в том, что первоначальный OR I реформировал усадьбу, в которой он собирал данные, и это работает мгновенно.

 $args = array( 'numberposts' => -1, 'post_type' => 'protean_event', 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'calendar', 'value' => $cid, 'compare' => '='), array( 'relation' => 'OR', array( 'relation' => 'AND', array( 'key' => 'event_date', 'value' => $startQuery, 'compare' => '>=' ), array( 'key' => 'event_date', 'value' => $endQuery, 'compare' => '<=' ), array( 'key' => 'does_this_event_repeat', 'value' => '1', 'compare' => '='), ), array( 'relation' => 'AND', array( 'key' => 'event_date', 'value' => $endQuery, 'compare' => '<=' ), array( 'key' => 'repeat_until', 'value' => $startQuery, 'compare' => '>=' ), array( 'key' => 'does_this_event_repeat', 'value' => '1', 'compare' => '>'), ) ), array( 'key' => 'event_category', 'value' => '"'.$category.'"', 'compare' => 'LIKE') ) );