get_avatar_url() как сбросить изображение по умолчанию

Вопрос или проблема

Я использую get_avatar_url(), чтобы получить изображение gravatar пользователя по умолчанию.

get_avatar_url( $user_id );

В случае отсутствия изображения я предоставлю изображение по умолчанию, используя массив аргументов.

$arg = array (
'default' => get_home_url() . '/wp-content/uploads/.../profile_image_0.jpg',
);

$avatar = get_avatar_url( $user_id , $arg );

Все работает нормально, пока мне не нужно заменить изображение. Проблема в том, что служба “https://i1.wp.com” кеширует изображение.

Итак, вопрос в том, как сбросить или заменить изображение, не меняя имя файла?

Вставьте ниже код в файл function.php

function theme_custom_avatar_url($url, $idOrEmail, $args){

    return get_home_url() . '/wp-content/uploads/.../profile_image_0.jpg';
}
add_filter('get_avatar_url', 'theme_custom_avatar_url', 10, 3);

.

Ответ или решение

Если вы хотите сбросить или заменить изображение по умолчанию, предоставляемое функцией get_avatar_url(), но сталкиваетесь с проблемой кэширования из-за использования сервиса, такого как https://i1.wp.com, вам следует рассмотреть следующие шаги.

Анализ проблемы:

При использовании функции get_avatar_url() для получения изображения Gravatar пользователя, если изображение не установлено, вы можете задавать его с помощью параметра 'default'. Однако, если вам необходимо обновить это изображение, кэширование на стороне сервиса может стать проблемой, так как изображение не обновляется мгновенно.

Решение:

  1. Изменение URL для кэширования:

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

    function theme_custom_avatar_url($url, $idOrEmail, $args) {
       return get_home_url() . '/wp-content/uploads/.../profile_image_0.jpg?' . time();
    }
    add_filter('get_avatar_url', 'theme_custom_avatar_url', 10, 3);

    В данном коде к URL изображения добавляется динамический параметр времени. Это гарантирует, что каждый запрос будет идентифицироваться как новый, и кеш не будет использоваться.

  2. Очистка кэша на сервере:

    Если обновление URL не решает проблему, рекомендуется проверить запущенные на сервере механизмы кэширования. Очистите кэш статических файлов и кэш объектов, чтобы гарантировать восприятие новых изменений.

  3. Проверка настроек CDN и HTTP кеширования:

    Проверьте, используется ли Content Delivery Network (CDN) или механизмы HTTP кеширования в вашем сайте. Часто именно там данные могут сохраняться без обновлений.

Заключение:

Через сознательное управление способами обновления и изменения URL изображений, вы можете эффективно обойти кэширование, обеспечивая отображение актуального изображения. Используйте рекомендуемый способ для постоянного обновления пользовательского интерфейса вашего сайта.

Оцените материал
Добавить комментарий

Капча загружается...