Как удалить или изменить аватар пользователя в WordPress без Gravatar

Почему стоит отказаться от Gravatar и использовать локальные аватары

WordPress по умолчанию использует систему Gravatar для отображения аватаров пользователей. Однако не всегда удобно полагаться на внешний сервис — например, по причинам конфиденциальности, скорости загрузки сайта или желания полностью контролировать отображаемые изображения. Кроме того, некоторые пользователи не хотят регистрироваться на Gravatar, а администраторы сайтов хотят иметь возможность централизованно управлять аватарами.

В таких случаях есть смысл заменить стандартное поведение WordPress и реализовать собственную систему аватаров, хранящихся локально на сайте.

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

Отключение Gravatar в WordPress: как убрать стандартные аватары

Для полного отключения Gravatar в WordPress можно использовать несколько подходов. Один из простых — фильтр get_avatar, который позволяет подменять HTML код аватара. Также можно вообще отключить показ аватаров в настройках WordPress, но это уберет их везде, что не всегда удобно.

Пример кода для удаления Gravatar и отображения вместо него пустого блока или заглушки:

add_filter('get_avatar', 'wpassist_remove_gravatar', 10, 5);
function wpassist_remove_gravatar($avatar, $id_or_email, $size, $default, $alt) {
    // Можно вернуть пустую строку или кастомное изображение
    return '<img src="https://wpassist.ru/wp-content/uploads/no-avatar.png" alt="'.$alt.'" width="'.$size.'" height="'.$size.'" />';
}

Этот код заменит все стандартные аватары на локальный файл no-avatar.png, который вы должны заранее загрузить в каталог uploads.

Отключение Gravatar через функции темы

Еще один способ — полностью убрать поддержку аватаров в WordPress, если они не нужны:

add_filter('get_avatar', '__return_false');

Но такой подход удалит аватары везде, включая комментарии и профили.

Создание локальной системы аватаров: загрузка и отображение кастомных изображений

Чтобы заменить Gravatar на локальные аватары, нужно реализовать возможность загрузки изображений для каждого пользователя и выводить их в нужных местах.

Рассмотрим простой пример добавления поля загрузки аватара в профиль пользователя с помощью хуков WordPress, а также вывод сохраненного изображения вместо Gravatar.

Добавление поля загрузки аватара в профиль пользователя

Для начала добавим поле на страницу редактирования профиля:

add_action('show_user_profile', 'wpassist_avatar_upload_field');
add_action('edit_user_profile', 'wpassist_avatar_upload_field');

function wpassist_avatar_upload_field($user) {
    ?>
    <h3>Локальный аватар</h3>
    <table class="form-table">
        <tr>
            <th><label for="wpassist_avatar">Загрузить аватар</label></th>
            <td>
                <input type="file" name="wpassist_avatar" id="wpassist_avatar" accept="image/*" /><br />
                <?php
                $avatar_url = get_user_meta($user->ID, 'wpassist_local_avatar', true);
                if ($avatar_url) {
                    echo '<img src="' . esc_url($avatar_url) . '" style="width:96px;height:96px;border-radius:50%;margin-top:10px;" />';
                }
                ?>
            </td>
        </tr>
    </table>
    <?php
}

Сохранение загруженного аватара

Добавим обработку загрузки при сохранении профиля:

add_action('personal_options_update', 'wpassist_save_avatar_upload');
add_action('edit_user_profile_update', 'wpassist_save_avatar_upload');

function wpassist_save_avatar_upload($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }

    if (!empty($_FILES['wpassist_avatar']['name'])) {
        $file = $_FILES['wpassist_avatar'];

        // Проверяем тип файла
        $allowed_types = ['image/jpeg', 'image/png', 'image/gif'];
        if (!in_array($file['type'], $allowed_types)) {
            add_action('user_profile_update_errors', function($errors) {
                $errors->add('wpassist_avatar_error', '<strong>Ошибка:</strong> разрешены только JPG, PNG и GIF.');
            });
            return;
        }

        require_once(ABSPATH . 'wp-admin/includes/file.php');
        $upload = wp_handle_upload($file, ['test_form' => false]);

        if (isset($upload['url'])) {
            update_user_meta($user_id, 'wpassist_local_avatar', esc_url_raw($upload['url']));
        }
    }
}

Вывод локального аватара вместо Gravatar

Теперь перепишем функцию get_avatar, чтобы выводить локальный аватар, если он есть:

add_filter('get_avatar', 'wpassist_custom_avatar', 10, 5);
function wpassist_custom_avatar($avatar, $id_or_email, $size, $default, $alt) {
    $user = false;

    if (is_numeric($id_or_email)) {
        $user = get_user_by('id', absint($id_or_email));
    } elseif (is_object($id_or_email)) {
        if (!empty($id_or_email->user_id)) {
            $user = get_user_by('id', absint($id_or_email->user_id));
        }
    } else {
        $user = get_user_by('email', $id_or_email);
    }

    if ($user && is_object($user)) {
        $local_avatar = get_user_meta($user->ID, 'wpassist_local_avatar', true);
        if ($local_avatar) {
            $avatar = '<img alt="' . esc_attr($alt) . '" src="' . esc_url($local_avatar) . '" class="avatar avatar-' . esc_attr($size) . ' photo" height="' . esc_attr($size) . '" width="' . esc_attr($size) . '" />';
        }
    }

    return $avatar;
}

Использование плагинов для локальных аватаров: обзор и рекомендации

Если не хочется писать код, можно использовать готовые решения. Один из популярных плагинов — WP User Avatar. Он позволяет загружать аватары прямо из админки и заменяет Gravatar на локальные изображения.

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

Главное при выборе плагина — убедиться, что он совместим с вашей темой и другими плагинами, а также регулярно обновляется.

Советы по оптимизации и безопасности при работе с локальными аватарами

Хранение аватаров локально требует соблюдения некоторых правил:

  • Ограничивайте типы и размеры загружаемых файлов для предотвращения загрузки вредоносных скриптов.
  • Используйте функции WordPress для обработки загрузок (например, wp_handle_upload), чтобы обеспечить безопасность.
  • Оптимизируйте изображения для ускорения загрузки страниц — можно применять сжатие и ресайз на сервере.
  • Регулярно проверяйте права доступа к папкам с загруженными файлами.

Следуя этим рекомендациям, вы создадите удобную и безопасную систему аватаров без зависимости от внешних сервисов.

Как использовать WPRemark для автоматического модерирования комментариев в WordPress
17.12.2025
Как использовать custom capabilities для ограничения доступа в WordPress
23.04.2026
Как использовать метаданные в WordPress для оптимизации сайта
12.11.2025
Как использовать hook pre_get_posts для фильтра записей в WordPress
09.12.2025
Как отключить AJAX загрузку товаров в WooCommerce
06.12.2025