Eigener Avatar in WordPress (ohne Gravatar oder Plugin)

Hinweis: Dieser Artikel wurde inzwischen aktualisiert.

WordPress bietet diverse Möglichkeiten, in Diskussionen Avatare anzuzeigen. Diese findet man im Admin-Konto unter Einstellungen -> Diskussionen -> Avatare. In der Regel wird entweder ein einheilicher Avatar oder ein zufällig generierter Avatar angezeigt. Um einen individuellen Avatar anzeigen zu lassen, benötigt man ein Gravatar-Konto, in dem man einen global gültigen Avatar hinterlegt. Somit wird in jedem Blog, in dem man einen Kommentar hinterlässt, der gleiche individuelle Avatar angezeigt. Natürlich mit dem Preis der Rückverfolgbarkeit, auf welchen Blogs man sich so rumtreibt. Nachfolgend daher eine Beschreibung, wie man das im eigenen Blog ohne Gravatar oder Plugin hinbekommt.

In WordPress 4.4 gibt es im Verzeichnis wp-includes eine Datei pluggable.php. Diese öffnet man mit einem guten Texteditor, der auch Zeilennummern anzeigt (z.B. Notepad++). In Zeile 2360 findet man den Code:

$url = $args['url'];

Diesen ändert man ab in:

if (($id_or_email == 'E-Mail meines Redakteur-Kontos') || ($id_or_email->user_id == ID meines Redakteur-Kontos)) {
  $url = 'wp-content/uploads/MeinAvatar.jpg';
} else {
  $url = $args['url'];
}

Die rot gekennzeichneten Bereiche müssen natürlich durch Ihre eigenen Angaben ersetzt werden.
Die ID des Redakteur-Kontos findet man heraus, wenn man mit dem Administratorkonto in Benutzer -> Alle Benutzer geht und auf den Namen des gewünschten Redakteurs klickt. In der Adressleiste Ihres Browsers sollte dann ungefähr stehen:

.../wp-admin/user-edit.php?user_id=5&wp_http...

In dem Fall wäre 5 der Wert, den man bei $id_or_email->user_id setzen muss. Die E-Mail des Redakteur-Kontos sollte eigentlich bekannt sein, ist im Zweifel aber auch in der Benutzerverwaltung ablesbar.
Zuletzt nur noch die Datei speichern und per ftp in den Ordner wp-includes hochladen. Danach sollten sowohl in der Beitragsansicht bei den Infos zum Ersteller als auch bei eigenen Kommentaren ein individueller Avatar zu sehen sein.

6 Kommentare

  1. Das heißt, man kann nur EINEN Redakteur eintragen? Wie ist es, wenn man drei hat? Gibt es da eine Möglichkeit?

    1. Nach diesem Schema lassen sich natürlich auch drei Redakteure verwalten. Man muss weitere Redakteure jeweils einfach mit elseif-Blöcken einfügen:

      if (($id_or_email == 'E-Mail 1. Redakteur') || ($id_or_email->user_id == ID 1. Redakteur)) {
      $url = 'wp-content/uploads/Avatar1.jpg';
      elseif (($id_or_email == 'E-Mail 2. Redakteur') || ($id_or_email->user_id == ID 2. Redakteur)) {
      $url = 'wp-content/uploads/Avatar2.jpg';
      elseif (($id_or_email == 'E-Mail 3. Redakteur') || ($id_or_email->user_id == ID 3. Redakteur)) {
      $url = 'wp-content/uploads/Avatar3.jpg';
      } else {
      $url = $args['url'];
      }

      Die entscheidende Code-Zeile ist zwischenzeitlich mit WordPress 5.1 übrigens in Zeile 2611 gerutscht.
      Seit einigen Monaten habe ich die Funktionalität dieses Tricks nicht mehr getestet, da mir der DSGVO-Trubel mit den Avataren zu wild geworden ist.
      Daher sind diese bei mir zwischenzeitlich bewusst deaktiviert.
      Bin mir aber ziemlich sicher, dass es weiterhin funktioniert :-)

  2. Hallo,
    deine Beschriebene Methode wäre eine Möglichkeit. Beim nächsten WP-Update würde diese Änderung möglicherweise aber wieder überschrieben. Ein Pro-Tipp: Allgemein gilt -niemals original Dateien von WP editieren. Eine Alternative stellen Hooks dar. Wie diese aussehen könnten? Im groben gesagt, platziert man einfach eine der für die Avatarausgabe zuständige Funktion innerhalb der functions.php eures Themes (Achtung: Editiert nicht die original functions.php eines gekauften Themes, welches mit regelmäßigen Updates versorgt wird. Nutzt Child-Themes.) und schreibt diese dort um.

    Das ganze geht natürlich noch viel schöner und eleganter, sollte aber an dieser Stelle ausreichend sein.

    1. Hallo,
      vielen Dank für die ausführliche Erläuterung. In der Tat prüfe ich vor jedem Update, ob „meine“ Datei verändert wurde und bessere dann nach.
      Vor ca. 2 Monaten habe ich erste Erfahrungen mit Child-Themes gesammelt und kann obige Empfehlung nur bestätigen :-)

  3. Hallo Schdefoon,
    die Anleitung ist gut, nur wenn man https nutzt wie ist das dann mit dem Code?

    Muss das ersetzt werden
    $url = ‚wp-content/uploads/MeinAvatar.jpg‘; durch
    $https = ‚wp-content/uploads/MeinAvatar.jpg‘;

    Danke für einen Tipp.

    1. Hallo Dirk,

      ich kann das leider bei mir nicht verifizieren, da mein Provider das im Moment nicht unterstützt. Da die Variable jedoch nur einen relativen Pfad enthält, bin ich mir ziemlich sicher, dass der beschriebene Weg auch bei Auslieferung von verschlüsseltem Inhalt (https) ohne weitere Änderungen funktioniert.
      Sollte das wider Erwarten doch nicht klappen, wäre mein nächster Ansatz folgende Anpassung der betroffenen Zeile:
      $url = ‚https://www.MeineDomain.de/wp-content/uploads/MeinAvatar.jpg‘;
      Kannst Dich ja gerne nochmal melden, ob es geklappt hat ;-)

Kommentare sind geschlossen.