Wprowadzenie

Jak zmienić domyślny Gravatar na własny w WordPress?

WordPress domyślnie korzysta z usługi Gravatar, aby przypisywać awatary do użytkowników na podstawie ich adresu e-mail. Dla wielu właścicieli stron jest to wygodne rozwiązanie, ale nie zawsze spełnia wszystkie potrzeby. Jak zmienić domyślny Gravatar na własny w WordPress ? Co zrobić, jeśli chcesz, aby użytkownicy mogli dodawać swoje własne, unikalne awatary bez konieczności korzystania z Gravatar? W tym poradniku pokażemy, jak krok po kroku zastąpić awatary Gravatar własnymi obrazami. Dzięki temu użytkownicy Twojej strony zyskają pełną kontrolę nad swoim wizerunkiem!

Przed rozpoczęciem procesu, upewnij się, że w ustawieniach Gravatara (Ustawienia -> Dyskusja) nie jest wybrana opcja „Pusto”

Jak zmienić domyślny Gravatar na własny w WordPress?

1. Tworzenie obszaru ustawień dla własnego awatara

Najpierw dodamy możliwość przesyłania własnych awatarów dla użytkowników. Możesz zrobić to, dodając kod do swojego pliku functions.php lub tworząc mały plugin.

<?php
// Własny avatar wybierany z biblioteki mediów - pole wyboru w profilu użytkownika

function custom_avatar_media_library_field($user)
{
	$avatar_url = get_user_meta($user->ID, 'custom_avatar', true);
	?>
	<table class="form-table">
		<tr>
			<th><label for="custom_avatar">Wybierz Avatar</label></th>
			<td>
				<img id="custom_avatar_preview" src="<?php echo esc_url($avatar_url ? $avatar_url : ''); ?>"
					style="width: 100px; height: 100px; <?php echo !$avatar_url ? 'display:none;' : ''; ?>" />
				<br>
				<input type="hidden" name="custom_avatar" id="custom_avatar" value="<?php echo esc_url($avatar_url); ?>" />
				<button type="button" class="button" id="custom_avatar_button">Wybierz Avatar</button>
				<button type="button" class="button" id="remove_custom_avatar"
					style="<?php echo !$avatar_url ? 'display:none;' : ''; ?>">Usuń Avatar</button>
			</td>
		</tr>
	</table>
	<script>
		jQuery(document).ready(function ($) {
			var mediaUploader;

			$('#custom_avatar_button').click(function (e) {
				e.preventDefault();
				if (mediaUploader) {
					mediaUploader.open();
					return;
				}
				mediaUploader = wp.media.frames.file_frame = wp.media({
					title: 'Choose Avatar',
					button: { text: 'Choose Avatar' },
					multiple: false
				});
				mediaUploader.on('select', function () {
					var attachment = mediaUploader.state().get('selection').first().toJSON();
					$('#custom_avatar').val(attachment.url);
					$('#custom_avatar_preview').attr('src', attachment.url).show();
					$('#remove_custom_avatar').show();
				});
				mediaUploader.open();
			});

			$('#remove_custom_avatar').click(function (e) {
				e.preventDefault();
				$('#custom_avatar').val('');
				$('#custom_avatar_preview').hide();
				$(this).hide();
			});
		});
	</script>
	<?php
}
add_action('personal_options', 'custom_avatar_media_library_field');

2. Zapisywanie wyboru w profilu użytkownika

Kolejno dodamy funkcję odpowiedzialną za zapisywanie w profilu własnych awatarów dla użytkowników. Możesz zrobić to, dodając kod do swojego pliku functions.php lub rozbudowując swój plugin.

<?php
// Zapisanie własnego Avatara

function save_custom_avatar_from_media_library($user_id)
{
	if (isset($_POST['custom_avatar'])) {
		update_user_meta($user_id, 'custom_avatar', esc_url_raw($_POST['custom_avatar']));
	}
}
add_action('personal_options_update', 'save_custom_avatar_from_media_library');
add_action('edit_user_profile_update', 'save_custom_avatar_from_media_library');

3. Modyfikacja funkcji wyświetlania awatara

Teraz musimy sprawić, aby WordPress pobierał nasz własny avatar zamiast Gravatar. Poniżej metoda za to odpowiedzialna.

<?php
// Wyświetlanie własnego awatara

function custom_avatar($avatar, $id_or_email)
{
	$user_id = is_numeric($id_or_email) ? $id_or_email : (is_object($id_or_email) && isset($id_or_email->ID) ? $id_or_email->ID : null);
	if ($user_id) {
		$custom_avatar = get_user_meta($user_id, 'custom_avatar', true);
		if ($custom_avatar) {
			// Adjust width and height based on the requested size or display position (admin / frontend)
			if (is_admin()) {
				$size = 32;
			} else {
				$size = 75;
			}

			$avatar = sprintf(
				'<img src="%s" class="avatar avatar-%s photo" width="%s" height="%s" alt="User Avatar" />',
				esc_url($custom_avatar),
				esc_attr($size),
				$size,
				$size,
			);
		}
	}
	return $avatar;
}
add_filter('get_avatar', 'custom_avatar', 10, 3);

4. Testowanie nowego systemu awatarów

Po dodaniu kodu, przejdź do profilu użytkownika i spróbuj przesłać nowy avatar. Sprawdź na swojej stronie, czy nowy obraz pojawia się zamiast domyślnego Gravatara.

Jak zmienić domyślny Gravatar na własny w WordPress?

5. Pełny kod

Poniżej pełny kod do pliku functions.php Twojego motywu potomnego:

<?php
// Własny avatar wybierany z biblioteki mediów - pole wyboru w profilu użytkownika

function custom_avatar_media_library_field($user)
{
	$avatar_url = get_user_meta($user->ID, 'custom_avatar', true);
	?>
	<table class="form-table">
		<tr>
			<th><label for="custom_avatar">Wybierz Avatar</label></th>
			<td>
				<img id="custom_avatar_preview" src="<?php echo esc_url($avatar_url ? $avatar_url : ''); ?>"
					style="width: 100px; height: 100px; <?php echo !$avatar_url ? 'display:none;' : ''; ?>" />
				<br>
				<input type="hidden" name="custom_avatar" id="custom_avatar" value="<?php echo esc_url($avatar_url); ?>" />
				<button type="button" class="button" id="custom_avatar_button">Wybierz Avatar</button>
				<button type="button" class="button" id="remove_custom_avatar"
					style="<?php echo !$avatar_url ? 'display:none;' : ''; ?>">Usuń Avatar</button>
			</td>
		</tr>
	</table>
	<script>
		jQuery(document).ready(function ($) {
			var mediaUploader;

			$('#custom_avatar_button').click(function (e) {
				e.preventDefault();
				if (mediaUploader) {
					mediaUploader.open();
					return;
				}
				mediaUploader = wp.media.frames.file_frame = wp.media({
					title: 'Choose Avatar',
					button: { text: 'Choose Avatar' },
					multiple: false
				});
				mediaUploader.on('select', function () {
					var attachment = mediaUploader.state().get('selection').first().toJSON();
					$('#custom_avatar').val(attachment.url);
					$('#custom_avatar_preview').attr('src', attachment.url).show();
					$('#remove_custom_avatar').show();
				});
				mediaUploader.open();
			});

			$('#remove_custom_avatar').click(function (e) {
				e.preventDefault();
				$('#custom_avatar').val('');
				$('#custom_avatar_preview').hide();
				$(this).hide();
			});
		});
	</script>
	<?php
}
add_action('personal_options', 'custom_avatar_media_library_field');




// Zapisanie własnego Avatara

function save_custom_avatar_from_media_library($user_id)
{
	if (isset($_POST['custom_avatar'])) {
		update_user_meta($user_id, 'custom_avatar', esc_url_raw($_POST['custom_avatar']));
	}
}
add_action('personal_options_update', 'save_custom_avatar_from_media_library');
add_action('edit_user_profile_update', 'save_custom_avatar_from_media_library');




// Wyświetlanie własnego awatara

function custom_avatar($avatar, $id_or_email)
{
	$user_id = is_numeric($id_or_email) ? $id_or_email : (is_object($id_or_email) && isset($id_or_email->ID) ? $id_or_email->ID : null);
	if ($user_id) {
		$custom_avatar = get_user_meta($user_id, 'custom_avatar', true);
		if ($custom_avatar) {
			// Adjust width and height based on the requested size or display position (admin / frontend)
			if (is_admin()) {
				$size = 32;
			} else {
				$size = 75;
			}

			$avatar = sprintf(
				'<img src="%s" class="avatar avatar-%s photo" width="%s" height="%s" alt="User Avatar" />',
				esc_url($custom_avatar),
				esc_attr($size),
				$size,
				$size,
			);
		}
	}
	return $avatar;
}
add_filter('get_avatar', 'custom_avatar', 10, 3);

Podsumowanie

Jak zmienić domyślny Gravatar na własny w WordPress?

Korzystając z powyższych kroków, stworzyliśmy system, który umożliwia użytkownikom dodawanie własnych awatarów, które będą wyświetlane zamiast standardowych awatarów Gravatar. Ten proces może zwiększyć zaangażowanie użytkowników i sprawić, że ich doświadczenia na Twojej stronie będą bardziej spersonalizowane.

Teraz Twoja strona WordPress jest bardziej elastyczna, a użytkownicy mogą wybrać obraz, który najlepiej ich reprezentuje.

Często zadawane pytania

Jak zmienić domyślny Gravatar na własny w WordPress?

Tak, po wprowadzeniu modyfikacji, użytkownicy mogą przesłać dowolny obraz, który chcą wykorzystać jako avatar. Ważne jest jednak, aby przestrzegać zasad dotyczących rozmiaru plików i upewnić się, że obraz jest odpowiedni. Zalecane jest używanie kwadratowych obrazów, aby wyglądały dobrze w każdej części strony.

Jeśli użytkownik nie przesłał własnego awatara, WordPress wyświetli domyślny obraz Gravatar lub obraz zdefiniowany przez administratora jako domyślny. W ten sposób nieaktywni użytkownicy nadal będą mieli przypisany standardowy avatar.

Tak, aby powrócić do Gravatar, wystarczy usunąć przesłany obraz z ustawień profilu. Po usunięciu własnego avatara WordPress automatycznie przywróci avatar Gravatar, o ile użytkownik ma tam konto powiązane z jego adresem e-mail.

Tak, po przesłaniu i zapisaniu nowego avatara zmiana powinna być widoczna od razu w całym WordPressie. Jeśli jednak nie widzisz zmiany, spróbuj odświeżyć stronę lub wyczyścić pamięć podręczną przeglądarki, ponieważ może ona przechowywać stare obrazy.

Jerzy Lazaridis - Web developer

Jerzy Lazaridis

Pokrewne owoce