#php #mysql #wordpress #performance #woocommerce
#php #mysql #wordpress #Производительность #woocommerce
Вопрос:
Я запускаю WooCommerce с темой Storefront, и мои страницы категорий работают довольно медленно. Когда я отслеживаю запрос, я вижу несколько внутренних соединений в «term_taxonomy_id»
WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (25)
AND tt1.term_taxonomy_id IN (25,268477,268482,268506,268507 etc etc)
AND AND tt2.term_taxonomy_id IN (25,268477,268482,268506,268507 etc etc)
но когда я запускаю (в phpmyadmin) тот же запрос без внутренних соединений для tt1.term_taxonomy_id и tt2.term_taxonomy_id, я получаю те же результаты.
Я попытался избавиться от этих внутренних соединений, подключив функцию к pre_get_posts
if ( isset ( $wp_query->query_vars['product_cat'] ) ) {
$wp_query->set('tax_query', array( array (
'taxonomy' => 'product_cat',
'terms' => 25,
'include_children' => false
) ) );
}
но это не влияет на запрос. Кто-нибудь знает, как это сделать?
Комментарии:
1. Вы имеете в виду что-то другое, кроме отказа от woocommerce?
2. Да, кроме как избегая woocommerce.
3. Чего я не понимаю, так это почему в одной таблице есть несколько внутренних соединений (wp_term_relationships), потому что я не понимаю, почему это актуально? И как мне изменить tax_query, чтобы он не присоединялся несколько раз.