it-swarm.com.de

Verwenden Sie ein lokales Bild für den Standard-Avatar

Ich habe versucht, dieses Snippet in meine functions.php zu integrieren

add_filter( 'avatar_defaults', 'newgravatar' );

function newgravatar ($avatar_defaults) {
    $myavatar = get_bloginfo('template_directory') . '/images/default_avatar.png';
    $avatar_defaults[$myavatar] = "Locale";
    return $avatar_defaults;
}

Ein neuer Avatar erscheint in Options-Discussion. Das Problem ist, dass es überhaupt nicht lokal ist. Der Avatar stammt aus http://i1.wp.com/mydomain.com/wp-content/themes/mytheme/images/default_avatar.png.

Also passiert es i1.wp.com trotzdem .. wie kann ich nur einen verdammten LOKALEN Link haben?

2

Ich habe nachgeschaut, wie ich das selbst mache, und die gleiche Funktion, die oben gezeigt wurde, schlägt immer wieder vor, dass sie nicht funktioniert. Vielleicht bin ich mir aufgrund eines kürzlichen Updates der WP-Codebasis nicht ganz sicher. Es ist ein bisschen hackisch und beinhaltet das Bearbeiten von Kerndateien (nicht gut), aber es ist eine Workaround-Lösung. Hier sind die Schritte:

  1. Verwenden Sie dieselbe Funktion, die im ursprünglichen Beitrag angegeben ist
  2. Öffnen Sie /wp-includes/pluggable.php und suchen Sie nach "function get_avatar". Dies sollte Sie dahin bringen, wo die Funktion in der Datei definiert ist
  3. Scrollen Sie nach unten, bis das erste IMG-Tag ausgegeben wird. Sie sollten Folgendes sehen:

    $out = str_replace( '&', '&', esc_url( $out ) );
    
    $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
    
  4. Fügen Sie unter $out den $out = $default; hinzu. Dies übergibt im Wesentlichen die Standard-Bildquellen-URL (in der Optionstabelle gespeichert).

Also sollte es so aussehen:

    $out = str_replace( '&#038;', '&amp;', esc_url( $out ) );
    $out = $default;

    $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
    $avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}

return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

Auch dies ist offensichtlich nicht ideal, da Sie diese Änderung verlieren, wenn Sie WordPress das nächste Mal aktualisieren. Aber im Moment funktioniert es.

Für zukünftige Besucher, die Core-Dateien nicht ändern möchten, empfiehlt es sich, die WP -Funktion get_avatar zu filtern. Dazu müsste anscheinend die im Filter angegebene Zeichenfolge mit einem regulären Ausdruck geändert werden, um die Gravatar-Domäne zu entfernen. Ich habe es versucht, aber bei Regex saugen. : P

1
GoTeamScotch

Sie haben das Photon-Modul im Jetpack-Plugin aktiviert. Dieses Modul leitet Ihre Bilder über das CDN von WordPress.com weiter. Wenn dies nicht geschehen soll, deaktivieren Sie das Photon-Modul in Jetpack.

1
Otto