Большое количество таксономий (загрузка)
-
Здравствуйте, столкнулся с проблемой в Woocommerce (проблема не конкретно woo, а wordpress в целом) — атрибуты создаются отдельными таксономиями pa_* и затем на каждой страницы сайта (на хуке init) происходит их регистрация в цикле (у меня их больше 1000) и загрузка сайта замедляется на ~3 секунды.
foreach ( $attribute_taxonomies as $tax ) { .... register_taxonomy(...); ... }
Т.е. если в системе большое количество таксономий, происходит существенное замедление сайта. Решением могло быть кэширование объектов таксономий (в объектный кэш, например, memcached). но во-первых, это нужно изменять файлы wp, во-вторых, не получается победить строчку $wp_taxonomies[ $taxonomy ] = $taxonomy_object; из-за неё происходит задержка и вся оптимизация сходит на нет. Кто-нибудь сталкивался с аналогичной проблемой, может быть у вас есть мысли по этому поводу? Спасибо.function register_taxonomy( $taxonomy, $object_type, $args = array() ) { global $wp_taxonomies; if ( ! is_array( $wp_taxonomies ) ) { $wp_taxonomies = array(); } /* br added */ $cache_key = 'br_cache_tax_' . md5($taxonomy); $is_attribute = stristr( $taxonomy,"pa_"); if($is_attribute) { $cache = wp_cache_get( $cache_key ); if( false !== $cache ) { $taxonomy_object = unserialize( $cache ); $wp_taxonomies[ $taxonomy ] = $taxonomy_object; return $taxonomy_object; } } /* ./ br added */ /* оригинальный код функции */ /* br added */ if( $is_attribute ) { $taxonomy_object_str = serialize ( $taxonomy_object ); wp_cache_set( $cache_key, $taxonomy_object_str); } /* ./ br added */ return $taxonomy_object;
- Тема «Большое количество таксономий (загрузка)» закрыта для новых ответов.