foxayb
@foxayb
newbie

Как оптимизировать функцию wc_get_attribute_taxonomies?

Функция wc_get_attribute_taxonomies:
spoiler
// /wp-content/plugins/woocommerce/includes/wc-attribute-functions.php
function wc_get_attribute_taxonomies() {

        $prefix      = WC_Cache_Helper::get_cache_prefix( 'woocommerce-attributes' );
        $cache_key   = $prefix . 'attributes';
        $cache_value = wp_cache_get( $cache_key, 'woocommerce-attributes' );

        if ( $cache_value ) {
                return $cache_value;
        }

        $raw_attribute_taxonomies = get_transient( 'wc_attribute_taxonomies' );

        if ( false === $raw_attribute_taxonomies ) {
                global $wpdb;

                $raw_attribute_taxonomies = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}woocommerce_attribute_taxonomies WHERE attribute_name != '' ORDER BY attribute_name ASC;" );

                set_transient( 'wc_attribute_taxonomies', $raw_attribute_taxonomies );
        }

        /**
         * Filter attribute taxonomies.
         *
         * @param array $attribute_taxonomies Results of the DB query. Each taxonomy is an object.
         */
        $raw_attribute_taxonomies = (array) array_filter( apply_filters( 'woocommerce_attribute_taxonomies', $raw_attribute_taxonomies ) );

        // Index by ID for easer lookups.
        $attribute_taxonomies = array();

        foreach ( $raw_attribute_taxonomies as $result ) {
                $attribute_taxonomies[ 'id:' . $result->attribute_id ] = $result;
        }

        wp_cache_set( $cache_key, $attribute_taxonomies, 'woocommerce-attributes' );

        return $attribute_taxonomies;

}

во время её работы происходит большая выборка данных из базы, что сильно сказывается на скорости загрузки сайта.
Что можно с этим сделать, как её оптимизировать? Имею большое кол-во атрибутов, где-то 2000.
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
Как вариант включить на хостинге объектное кэширование (Redis или MemCache). Тогда будет только один, первый, запрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы