WP_CACHE_ADD() Function: Speed Up Your Site with Caching | WP 2.0.0

WP_CACHE_ADD() │ WP 2.0.0

Функция WP_CACHE_ADD() позволяет добавлять данные в кэш, если ключ кэша уже не существует. Это помогает ускорить работу вашего сайта, избавляя от излишних запросов к базе данных.

Возврат (RETURN)

Функция возвращает true, если данные успешно добавлены в кэш, и false, если ключ кэша и группа уже существуют.

Использование (USAGE)

Синтаксис функции:

wp_cache_add( $key, $data, $group, $expire );

Параметры:

  • $key (int|string) (обязательный): Ключ кэша, который будет использоваться для будущих запросов.
  • $data (mixed) (обязательный): Данныя, которые нужно добавить в кэш.
  • $group (string): Группа, в которую добавляется кэш. Это позволяет использовать одинаковый ключ в разных группах. По умолчанию: '' (пустая строка).
  • $expire (int): Время, через которое данные кэша станут недействительными, в секундах. По умолчанию: 0 (без истечения срока).

Примеры (EXAMPLES)

Пример 1: Добавление кэша, если его еще нет

Функция get_the_terms() сохраняет данные в кэше и обращается к ним при следующем вызове, тем самым избегая повторных запросов к базе данных.

function _get_the_terms( $post, $taxonomy ) {
    // Попытка получить данные из кэша
    $terms = get_object_term_cache( $post->ID, $taxonomy );

    if( false === $terms ){
        // Кэша нет, получаем термины
        $terms = wp_get_object_terms( $post->ID, $taxonomy );

        if ( ! is_wp_error( $terms ) ) {
            // Добавляем данные в кэш
            $term_ids = wp_list_pluck( $terms, 'term_id' );
            wp_cache_add( $post->ID, $term_ids, $taxonomy . '_relationships' );
        }
    }

    return $terms;
}

Пример 2: Использование объектного кэша

Этот пример лишь для тех, кто использует плагины для объектного кэширования. Благодаря кэшу, вы не должны выполнять так много кода.

function wp_widget_recent_entries( $args ) {
    $cache_key = 'widget_recent_entries';
    $cache_on = true;

    if( $cache_on ){
        $output = wp_cache_get( $cache_key, 'widget' );

        if( $output ){
            echo $output;
            return;
        }

        ob_start();
    }

    extract( $args );

    $options = get_option( 'widget_recent_entries' );
    $title = empty( $options['title'] ) ? __( 'Недавние записи' ) : apply_filters( 'widget_title', $options['title'] );

    $number = (int) $options['number'];

    // Ограничиваем количество записей
    if( ! $number ){
        $number = 10;
    }
    elseif( $number < 1 ){
        $number = 1;
    }
    elseif( $number > 15 ){
        $number = 15;
    }

    $r = new WP_Query( [
        'posts_per_page'   => $number,
        'nopaging'         => 0,
        'post_status'      => 'publish',
        'caller_get_posts' => 1,
    ] );

    if( $r->have_posts() ) :
        echo $before_widget;
        if( ! empty( $title ) ){
            echo $before_title . $title . $after_title;
        }
?>
        
    have_posts() ) : $r->the_post(); ?>

Пример 3: Получение статистики кэша

Вы можете получить статистику кэша в конце PHP скрипта:

global $wp_object_cache;
$wp_object_cache->stats(); // отображает информацию о кэше

Примечания (NOTES)

  • Для более подробной информации смотрите: WP_Object_Cache::add().
  • Глобальный экземпляр объекта кэша: $wp_object_cache.

Изменения (CHANGELOG)

  • С версии 2.0.0 — введена в использование.

Теперь вы знаете, как использовать WP_CACHE_ADD() для оптимизации работы вашего сайта на WordPress. Это полезно для ускорения загрузки страниц и уменьшения нагрузки на базу данных.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *