Довільна картинка для аватара за замовчуванням

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

Сервіс 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-umolchanii

Примітка: який на поточний момент обраний аватар за умовчанням можна дізнатися, отримавши значення опції ‘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 protected]', 48, 'http://example.com/default-avatar.png');
$ava_data = get_avatar_data( '[email protected]', array(
	'size' => 48,
	'default' => 'http://example.com/default-avatar.png',
)));
echo $ava_data['url'];
$url = get_avatar_url( '[email protected]', array(
	'size' => 48,
	'default' => 'http://example.com/default-avatar.png',
)));
echo $url;

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

Наприкінці кілька плагінів на тему:

  • Avatar Manager – додає поле завантаження аватарки у профіль. Так кожен користувач може встановити свій аватар повз сервіс grabatar. Виводиться аватар зазвичай через функцію get_avatar() .

  • Basic User Avatars – додає можливо завантажувати аватар у профілі користувача. Є підтримка завантаження з фронт-енду. Підтримка bbPress support.

  • WP First Letter Avatar – Встановлює як аватарку першу букву імені автора. Підтримується і кирилиця, латиниця та цифри.

  • Add New Default Avatar – простенький плагін (аналог варіанта 2 з цієї статті) – додає опцію дефолтної ава в налаштування.

Жоден із цих плагінів я не пробував у роботі і близько не розглядав, тому за якістю і т.д. сказати нічого…

Джерело: функція get_avatar()

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *