Dobra wiadomość dla WordPress w wersji 4.2+
Od wersji 4.2 przydatna get_avatar_url()
funkcja, wprowadzona jako żądanie funkcji w bilecie nr 21195 kilka lat temu, teraz jest dostarczana z rdzeniem :
/**
* Retrieve the avatar URL.
*
* @since 4.2.0
*
* @param mixed $id_or_email The Gravatar to retrieve a URL for. Accepts a user_id, gravatar md5 hash,
* user email, WP_User object, WP_Post object, or comment object.
* @param array $args {
* Optional. Arguments to return instead of the default arguments.
*
* @type int $size Height and width of the avatar in pixels. Default 96.
* @type string $default URL for the default image or a default type. Accepts '404' (return
* a 404 instead of a default image), 'retro' (8bit), 'monsterid' (monster),
* 'wavatar' (cartoon face), 'indenticon' (the "quilt"), 'mystery', 'mm',
* or 'mysterman' (The Oyster Man), 'blank' (transparent GIF), or
* 'gravatar_default' (the Gravatar logo). Default is the value of the
* 'avatar_default' option, with a fallback of 'mystery'.
* @type bool $force_default Whether to always show the default image, never the Gravatar. Default false.
* @type string $rating What rating to display avatars up to. Accepts 'G', 'PG', 'R', 'X', and are
* judged in that order. Default is the value of the 'avatar_rating' option.
* @type string $scheme URL scheme to use. See set_url_scheme() for accepted values.
* Default null.
* @type array $processed_args When the function returns, the value will be the processed/sanitized $args
* plus a "found_avatar" guess. Pass as a reference. Default null.
* }
* @return false|string The URL of the avatar we found, or false if we couldn't find an avatar.
*/
function get_avatar_url( $id_or_email, $args = null ) {
$args = get_avatar_data( $id_or_email, $args );
return $args['url'];
}
gdzie get_avatar_data()
jest także nowa funkcja pomocnika.
Zawiera on część kodu:
... CUT ...
/**
* Filter whether to retrieve the avatar URL early.
*
* Passing a non-null value in the 'url' member of the return array will
* effectively short circuit get_avatar_data(), passing the value through
* the {@see 'get_avatar_data'} filter and returning early.
*
* @since 4.2.0
*
* @param array $args Arguments passed to get_avatar_data(), after processing.
* @param int|object|string $id_or_email A user ID, email address, or comment object.
*/
$args = apply_filters( 'pre_get_avatar_data', $args, $id_or_email );
if ( isset( $args['url'] ) && ! is_null( $args['url'] ) ) {
/** This filter is documented in wp-includes/link-template.php */
return apply_filters( 'get_avatar_data', $args, $id_or_email );
}
... CUT ...
gdzie możemy zobaczyć, że gdy url
parametr jest ustawiony, dostępne filtry to pre_get_avatar_data
i get_avatar_data
.
Po niedawnej aktualizacji do 4.2 miałem problem z kompozycją, która zdefiniowała własną wersję get_avatar_url()
, bez prefiksu nazwy funkcji ani function_exists()
sprawdzania. To przykład, dlaczego to ważne ;-)
Możesz użyć filtra,
get_avatar
aby przenieść wszystkie dane do awatara, a także adres URL wewnątrz znaczników. Myślę, że WP nie ma funkcji zwracania tylko adresu URL, jeśli obraz awatara.Możesz także przepisać tę funkcję wewnątrz wtyczki lub motywu, funkcja jest aktywna, jeśli nazwa tej funkcji nie znajduje się w innym zdefiniowanym miejscu.
Możliwe jest więc dodanie parametru do zwrócenia tylko adresu URL obrazu, w ten sposób użyj parametru
$url
z,TRUE
a otrzymasz tylko adres URL.Innym małym wariantem jest to, że tworzysz adres URL z regułą Gravatar.
użyj tego w swoim źródle z e-mailami autorów, a otrzymasz adres URL obrazu.
źródło
Myślę, że to lepsza wersja odpowiedzi aalaap:
źródło
Proste lokalne awatary używają pól meta do przechowywania awatara, dzięki czemu możesz po prostu odzyskać wartości, wywołując
get_user_meta
i chwytając pole „simple_local_avatar”. Otrzymasz tablicę taką:źródło
Metoda alaap już nie działa w Wordpress 4.2
Wymyśliłem rozwiązanie. Oto jest i działa dobrze:
w szablonie wystarczy użyć:
Uwaga: należy go używać wewnątrz pętli.
źródło
Gdy awatar został przesłany lokalnie, WP zwraca znacznik img z atrybutem src w podwójnych cudzysłowach, więc stwierdziłem, że ten wzór działał lepiej:
źródło
Kilka godzin temu zastanawiałem się, jak to zrobić. Ale wkrótce mam rozwiązanie i stworzyłem wtyczkę, sprawdź, czy get_avatar_url ($ user_id, $ size) działa dla Ciebie, czy nie. Dzięki..
Kod wtyczki:
Stosowanie:
Wywołanie funkcji:
Za pomocą krótkiego kodu:
źródło