WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Произвольная картинка для аватара по умолчанию

Короткая заметка о том, как установить произвольную картинку в качестве аватарки по дефолту. Вариантов это сделать как минимум три. Какой из них лучше подойдет в конкретной ситуации написано ниже.

Сервис gravatar не особо популярный, особенно в рунете. Поэтому много комментариев остаются без авы. Для таких случаев, чтобы пустышки не были одинаковыми, в настройках WordPress можно установить динамические аватарки (всяких монстриков).

Но иногда, нужно быть «в бренде» своего сайта и по умолчанию установить произвольную аватарку. Этот пост именно для таких случаев.

Обратите внимание, что установленная дефолтная картинка будет показана только в том случае, если у пользователя нет аватарки. А то при тестировании бывает путаница...

Вариант 1: добавить настройку (новый дефолтный аватар) в админ-панель

Код ниже добавит еще один, дополнительный вариант аватарки при выборе дефолтной авы в админ-панели, в настройках обсуждения.

## Добавляет еще один вариант аватарки по умолчанию в настройки обсуждения
## Файл аватарки 'def-avatar.jpg' нужно залить в папку темы 'img'
add_filter( 'avatar_defaults', 'add_default_avatar_option' );
function add_default_avatar_option( $avatars ){
	$url = get_stylesheet_directory_uri() . '/img/def-avatar.jpg';
	$avatars[ $url ] = 'Аватар сайта';

	return $avatars;
}

В результате получим:

optsiya-avatarka-po-umolchaniyu

Заметка: какой на текущий момент выбран аватар по умолчанию можно узнать получив значение опции 'avatar_default' - get_option('avatar_default').

Недостаток этого метода в том, что нельзя просто установить код, а нужно еще «сходить» в админку и включить аватарку по умолчанию. Такой подход может быть просто неприемлем, когда нужно жестко выставить аву, чтобы её нельзя было поменять... Или, когда нужно, чтобы указанная ава была по умолчанию всегда, независимо от того кто и что там поставил в настройках.

Специально для таких случаев я написал второй вариант. А оказалось это кстати, не так просто как я ожидал, но это никому не нужная лирика, поэтому её пропустим...

Вариант 2: указать аватарку по умолчанию «на лету», через фильтр

Этот вариант выставляет аву по умолчанию сразу же после вставки кода и не дает возможность изменить настройку авы в админ-панели.

Хук учитывает параметр default указанный в функциях вывода или получения аватара. Т.е. например, если вызывать функцию get_avatar() с параметром default, то будет выставлен аватар указанный в параметре default, а не тот что указан в хуке.

## Устанавливает аватар по умолчанию
## Файл аватарки 'def-avatar.jpg' нужно поместить в папку темы 'img'
add_filter( 'pre_get_avatar_data', 'replace_default_avatar' );
function replace_default_avatar( $args ){
	// админка и страница обсуждения, где настраивается ава по умолчанию...
	// if( is_admin() && get_current_screen()->base === 'options-discussion' ) return $args;

	static $defava;
	if( $defava === null ){
		$defava = get_option( 'avatar_default', 'mystery' ); // ускоримся
	}

	// Если используется ава по умолчанию, чтобы работал параметр 'default'
	// если он установлен для функций аватарок
	if( ! $args['default'] || $defava == $args['default'] ){
		$args['default'] = get_stylesheet_directory_uri() . '/img/def-avatar.jpg';
	}

	return $args;
}

Вариант 3: указать ссылку на дефолтный аватар при вызове функции

Это пожалуй самый не гибкий вариант. Не помню, чтобы я его когда-то использовал. Но он определенно может пригодится...

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

  • get_avatar() - Получает <img> html код аватара комментатора.
  • get_avatar_data() - Получает массив данных об аватаре.
  • get_avatar_url() - Получает URL аватарки по переданному email, ID или объекту пользователя.

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

echo get_avatar( 'email@gmail.com', 48, 'http://example.com/default-avatar.png');
$ava_data = get_avatar_data( 'email@gmail.com', array(
	'size' => 48,
	'default' => 'http://example.com/default-avatar.png',
) );
echo $ava_data['url'];
$url = get_avatar_url( 'email@gmail.com', array(
	'size' => 48,
	'default' => 'http://example.com/default-avatar.png',
) );
echo $url;

Плагины для аватарок в WordPress

В заключении несколько плагинов по теме:

  • Avatar Manager - добавляет поле загрузки аватарки в профиль. Так каждый пользователь может установить свой аватар мимо сервиса gravatar. Выводиться аватар привычно через функцию get_avatar().

  • Basic User Avatars - добавляет возможно загружать аватар в профиле пользователя. Есть поддержка загрузки из фронт-энда. Поддержка bbPress support.

  • WP First Letter Avatar - Устанавливает в качестве аватарки первую букву имени автора. Поддерживается и кириллица, латиница и цифры.

Ни один из этих плагинов я не пробовал в работе и близко не рассматривал, поэтому по качеству и т.д. сказать нечего...

6 комментариев
    Войти