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.
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
Как вариант включить на хостинге объектное кэширование (Redis или MemCache). Тогда будет только один, первый, запрос.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы