Wie erhalte ich bei Verwendung von get_avatar die Avatar-URL anstelle eines HTML-IMG-Tags?
7 Antworten
- Stimmen
-
- 2015-05-13
Gute Nachrichtenfür WordPress-Versionen 4.2+
Seit Version 4.2 wurde diepraktische Funktion
get_avatar_url ()
als Feature Request in Ticket # 21195 voreinigen Jahren wirdjetztmit dem Kerngeliefert :/** * Rufen Sie die Avatar-URL ab. * * * @since 4.2.0 * * * @paramgemischte $id_or_email Der Gravatar,für deneine URL abgerufen werden soll. Akzeptierteine user_id,gravatarmd5 hash, * Benutzer-E-Mail,WP_User-Objekt,WP_Post-Objekt oder Kommentarobjekt. * @param array $ args { * Optional. Argumente,die anstelle der Standardargumente zurückgegeben werden sollen. * * * @typeint $ size Höhe und Breite des Avatarsin Pixel. Standard 96. * @type string $ Standard-URLfür das Standardbild odereinen Standardtyp. Akzeptiert '404' (Rückgabe * a 404 anstelleeines Standardbildes),'retro' (8 Bit),'monsterid' (Monster), * 'Wavatar' (Comic-Gesicht),'Indenticon' (der "Quilt"),'Mystery','mm', * oder 'mysterman' (The Oyster Man),'blank' (transparentes GIF) oder * 'gravatar_default' (das Gravatar-Logo). Standardist der Wert von * Option 'avatar_default'mit dem Fallback 'Mystery'. * @typebool $force_default Gibt an,obimmer das Standardbild angezeigt werden soll,niemals das Gravatar. Standardwertfalse. * @type string $ Bewertung Welche Bewertung soll Avatarebis anzeigen? Akzeptiert 'G','PG','R','X' und sind *in dieser Reihenfolgebeurteilt. Standardist der Wert der Option 'avatar_rating'. * @type string $ Schema URL-Schema zu verwenden. Akzeptierte Wertefinden Sie unter set_url_scheme (). * Standardnull. * @type array $process_args Wenn die Funktion zurückgegeben wird,ist der Wert das verarbeitete/bereinigte $ args *pluseine "found_avatar" Vermutung. Als Referenz übergeben. Standardwertnull. *} * @returnfalse| string Die URL desgefundenen Avatars oderfalse,wenn wir keinen Avatarfinden konnten. */ Funktionget_avatar_url ($id_or_email,$ args=null) { $ args=get_avatar_data ($id_or_email,$ args); return $ args ['url']; }}
wobei
get_avatar_data ()
ist aucheine neue Hilfsfunktion.Esenthält diesen Codeteil:
... CUT ... /** * Filtern Sie,ob die Avatar-URLfrühzeitig abgerufen werden soll. * * * Das Übergebeneines Nicht-Null-Wertsim 'url'-Mitglied des Rückgabearrays wird ausgeführt * Schließen Sieget_avatar_data ()effektiv kurz und übergeben Sie den Wert * Der {@see 'get_avatar_data'} Filter und diefrühzeitige Rückkehr. * * * @since 4.2.0 * * * @param array $ args Argumente,dienach der Verarbeitung anget_avatar_data () übergeben wurden. * @paramint | object| string $id_or_email Eine Benutzer-ID,E-Mail-Adresse oderein Kommentarobjekt. */ $ args=apply_filters ('pre_get_avatar_data',$ args,$id_or_email); if (isset ($ args ['url']) & amp; & amp ;!is_null ($ args ['url'])) { /** Dieser Filteristin wp-includes/link-template.php */dokumentiert return apply_filters ('get_avatar_data',$ args,$id_or_email); }} ... SCHNITT ...
wo wir sehen können,dassbeim Festlegen des Parameters
url
die verfügbaren Filterpre_get_avatar_data code> und
get_avatar_data code> sind.
Nach dem letzten Upgrade auf 4.2 hatteichein Problemmit einem Thema,das dieeigene Version von
get_avatar_url ()
ohne Präfixfür Funktionsnamen oderdefiniertefunction_exists ()
prüfen. Dasist alsoein Beispiel dafür,warum das wichtigist ;-)Good news for WordPress versions 4.2+
Since version 4.2 the handy
get_avatar_url()
function, introduced as a feature request in ticket #21195 few years ago, now ships with the core:/** * 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']; }
where
get_avatar_data()
is also a new helper function.It contains this code part:
... 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 ...
where we can see that when the
url
parameter is set, the available filters arepre_get_avatar_data
andget_avatar_data
.After upgrading to 4.2 recently, I had a problem with a theme that defined it's own version of
get_avatar_url()
, without any function name prefixing or afunction_exists()
check. So this is an example of why that's important ;-) -
- 2012-07-25
Die obige Antwort scheint umfassend zu sein,aberich habegeradeeine Wrapper-Funktiongeschrieben undbin weitergegangen.Hieristes,wenn Sieesbrauchen (setzen Sie diesin
functions.php
):function get_avatar_url($get_avatar){ preg_match("/src='(.*?)'/i", $get_avatar, $matches); return $matches[1]; }
und verwenden Siees dann,woimmer Sieesbenötigen,in den Vorlagendateien wiefolgt:
<img src="<? echo get_avatar_url(get_avatar( $curauth->ID, 150 )); ?>" align="left" class="authorimage" />
Esisteinfacheinfacher.
Die Verwendung von RegEx zum Parsen von HTMListin diesem Fallin Ordnung,da hiernurein
img
-Tag analysiert wird,sodass diesnicht zu kostspieligist.The answer above seems comprehensive, but I just wrote a wrapper function and moved on. Here it is if you need it (put this in
functions.php
):function get_avatar_url($get_avatar){ preg_match("/src='(.*?)'/i", $get_avatar, $matches); return $matches[1]; }
and then use it wherver you need it in the template files like this:
<img src="<? echo get_avatar_url(get_avatar( $curauth->ID, 150 )); ?>" align="left" class="authorimage" />
It's just simpler.
Using RegEx to parse HTML in this case is okay, because this will only be parsing one
img
tag, so it won't be too costly.-
Eine kleine Änderung ... die Funktionget_avatar setzt den src auf "not",damit die Übereinstimmungnullist. Der reguläre Ausdruck solltepreg_match sein ('/src="(. *?)"/I',$get_avatar,$match);;A small change... the get_avatar function puts the src within " not ' so the match will be null. The regex should be preg_match('/src="(.*?)"/i', $get_avatar, $matches);
- 5
- 2014-09-17
- spdaly
-
danke @spdaly -ich hoffe,das Kommentieren würde den Autor zum Bearbeitenbringen;) - danke aalaapthanks @spdaly - i hope commenting would make the author to edit ;) - thanks aalaap
- 0
- 2014-12-21
- Sagive SEO
-
Wenn Sie Ihreeigene Fragebeantwortet haben,markieren Sie diesebitte als akzeptierte Antwort.If you answered your own question please mark it as the accepted answer.
- 0
- 2016-08-01
- DᴀʀᴛʜVᴀᴅᴇʀ
-
@Darth_Vader Ichbin seit dem Posten der Fragenichtmehr darauf zurückgekommen,daherbin ichmirnichtmehr sicher,ob dies derideale Wegist,dies zutun.Ich denke,dieneue Antwort zu 4.2+istbesser.@Darth_Vader I haven't gone back to this since I posted the question, so I'm no longer sure if this is the ideal way to do it. I think the new answer about 4.2+ is better.
- 0
- 2016-08-02
- aalaap
-
- 2014-03-25
Ich denke,diesisteine bessere Version von Aalaaps Antwort:
// In your template ... $avatar_url = get_avatar_url ( get_the_author_meta('ID'), $size = '50' ); // Get src URL from avatar <img> tag (add to functions.php) function get_avatar_url($author_id, $size){ $get_avatar = get_avatar( $author_id, $size ); preg_match("/src='(.*?)'/i", $get_avatar, $matches); return ( $matches[1] ); }
I think this a better version of aalaap's answer:
// In your template ... $avatar_url = get_avatar_url ( get_the_author_meta('ID'), $size = '50' ); // Get src URL from avatar <img> tag (add to functions.php) function get_avatar_url($author_id, $size){ $get_avatar = get_avatar( $author_id, $size ); preg_match("/src='(.*?)'/i", $get_avatar, $matches); return ( $matches[1] ); }
-
- 2015-04-15
get_user_meta($userId, 'simple_local_avatar');
Einfache lokale Avatare verwendet Metafelder zum Speichern des Avatars,sodass Sie dieseinfachtun könnenRufen Sie die Werte ab,indem Sie
get_user_meta
aufrufen und den 'simple_local_avatar' abrufen' Feld.Sieerhaltenein Array wiefolgt zurück:array ( [full] => 'http://...', [96] => 'http://...', [32] => 'http://...' )
get_user_meta($userId, 'simple_local_avatar');
Simple Local Avatars uses meta fields to store the avatar, so you can simply retrieve the value(s) by calling
get_user_meta
and grabbing the 'simple_local_avatar' field. You'll get returned an array like so:array ( [full] => 'http://...', [96] => 'http://...', [32] => 'http://...' )
-
- 2015-04-25
Die Methode vonalaapfunktioniertin Wordpress 4.2
nichtmehrIch habeeine Lösunggefunden.Hieristes undesfunktioniertgut:
function my_gravatar_url() { // Get user email $user_email = get_the_author_meta( 'user_email' ); // Convert email into md5 hash and set image size to 80 px $user_gravatar_url = 'http://www.gravatar.com/avatar/' . md5($user_email) . '?s=80'; echo $user_gravatar_url; }
in der Vorlage verwenden Sieeinfach:
<?php my_gravatar_url() ?>
Hinweis: Esmussinnerhalbeiner Schleife verwendet werden.
alaap's method doesn't work anymore in Wordpress 4.2
I came up with a solution. Here it is and it's working good:
function my_gravatar_url() { // Get user email $user_email = get_the_author_meta( 'user_email' ); // Convert email into md5 hash and set image size to 80 px $user_gravatar_url = 'http://www.gravatar.com/avatar/' . md5($user_email) . '?s=80'; echo $user_gravatar_url; }
in Template just use:
<?php my_gravatar_url() ?>
Notice: it must be used inside a loop.
-
- 2014-11-27
Wenn der Avatar lokal hochgeladen wurde,gibt WP dasimg-Tagmit dem src-Attributin doppelten Anführungszeichen zurück,sodassichfand,dass dieses Musterbesserfunktioniert:
preg_match("/src=['\"](.*?)['\"]/i", $get_avatar, $matches);
When the avatar has been uploaded locally, WP, returns the img tag with the src attribute in double quotes, so I found this pattern worked better:
preg_match("/src=['\"](.*?)['\"]/i", $get_avatar, $matches);
-
- 2014-12-14
Vorein paar Stunden habeichmichgefragt,wieich das auchmachen soll. Aber sobaldich die Lösungbekommen undein Pluginerstellt habe,überprüfen Siebitte,ob get_avatar_url ($ user_id,$ size ) funktioniertfür dich odernicht. Danke ..
Plugin-Code:
/* Plugin Name: Get Avatar URL Plugin URI: https://github.com/faizan1041/get-avatar-url Description: get_avatar returns image, get_avatar_url will give you the image src. Author: Faizan Ali Version: 1.0 Author URI: https://github.com/faizan1041/ License: GPL v2+ */ function get_avatar_url($user_id, $size) { $avatar_url = get_avatar($user_id, $size); $doc = new DOMDocument(); $doc->loadHTML($avatar_url); $xpath = new DOMXPath($doc); $src = $xpath->evaluate("string(//img/@src)"); return $src; } function sc_get_avatar_url( $atts ) { $atts = shortcode_atts( array( 'email' => '', 'size' => 150 ), $atts, 'avatar_url' ); return get_avatar_url($atts['email'],$atts['size']); } add_shortcode( 'avatar_url', 'sc_get_avatar_url' );
Verwendung:
Aufruf der Funktion:
get_avatar_url( get_the_author_meta( 'user_email'), 150);
Shortcode verwenden:
do_shortcode('[avatar_url email="' . get_the_author_meta( 'user_email') .'" size=150 ]' );
A few hours ago, I was wondering how to do that too. But, soon I got the solution and made a plugin, please check whether get_avatar_url($user_id, $size) works for you or not. Thanks..
Plugin code:
/* Plugin Name: Get Avatar URL Plugin URI: https://github.com/faizan1041/get-avatar-url Description: get_avatar returns image, get_avatar_url will give you the image src. Author: Faizan Ali Version: 1.0 Author URI: https://github.com/faizan1041/ License: GPL v2+ */ function get_avatar_url($user_id, $size) { $avatar_url = get_avatar($user_id, $size); $doc = new DOMDocument(); $doc->loadHTML($avatar_url); $xpath = new DOMXPath($doc); $src = $xpath->evaluate("string(//img/@src)"); return $src; } function sc_get_avatar_url( $atts ) { $atts = shortcode_atts( array( 'email' => '', 'size' => 150 ), $atts, 'avatar_url' ); return get_avatar_url($atts['email'],$atts['size']); } add_shortcode( 'avatar_url', 'sc_get_avatar_url' );
Usage:
Calling the function:
get_avatar_url( get_the_author_meta( 'user_email'), 150);
Using Shortcode:
do_shortcode('[avatar_url email="' . get_the_author_meta( 'user_email') .'" size=150 ]' );
Ich verwendeein Pluginnamens Einfache lokale Avatare ,mit demichgespeicherte Autorenbilder hochladen kannaufmeinem Server lokal (kein Gravatar).Das Pluginfunktionierteinwandfrei und
get_avatar
gibt den lokalen Avatar zurück.Ichmuss diesen Avatarjedoch auf unterschiedliche Weise und an unterschiedlichen Orten verwenden,und dafürbenötigeich die lokale Avatar-Bild-URL anstelle desgesamten HTML-Tags.Ich könnteeine Wrapper-Funktionfür
get_avatar
schreiben,die RegEx oder SimpleXML verwendet,umnur die URL auszuwählen und zurückzugeben,aberich habemichgefragt,obeseine Möglichkeitgibt,dies zutun.