it-swarm.com.de

Ersetzen Sie gleichzeitig Kommentar-Avatare und Links

Ich versuche, die Autorendaten für Wordpress-Kommentare zu ersetzen:

1) Avatar (hochgeladenes Bild anstelle von Gravatar)

2) Autorenlink (Link zur Autorenseite, da nur Mitglieder Kommentare abgeben können)

Ich habe aus dieser Frage eine großartige Lösung für diese Frage gefunden und den folgenden Code implementiert:

if ( ! function_exists( 't5_comment_uri_to_author_archive' ) )
{
add_filter( 'get_comment_author_url', 't5_comment_uri_to_author_archive' );

function t5_comment_uri_to_author_archive( $uri )
{
    global $comment;

    // We do not get the real comment with this filter.
    if ( empty ( $comment )
        or ! is_object( $comment )
        or empty ( $comment->comment_author_email )
        or ! $user = get_user_by( 'email', $comment->comment_author_email )
    )
    {
        return $uri;
    }

    return get_author_posts_url( $user->ID );
}
}

Der Code funktioniert perfekt zum Ersetzen von Links, und ich möchte ihn auch zum Ersetzen der Avatare verwenden. Ich habe eine Kopie der Funktion erstellt und die Namen und die Rückgabe geändert:

if ( ! function_exists( 'my_comment_imgs' ) )
{
add_filter( 'get_comment_author_url', 'my_comment_imgs' );

function my_comment_imgs( $uri )
{
    global $comment;

    // We do not get the real comment with this filter.
    if ( empty ( $comment )
        or ! is_object( $comment )
        or empty ( $comment->comment_author_email )
        or ! $user = get_user_by( 'email', $comment->comment_author_email )
    )
    {
        return $uri;
    }

    return get_avatar( $user->ID );
}
}

Diese Funktion negiert jedoch die erste, so dass ich aktualisierte Avatare bekomme, aber die Autorenlinks verliere. Wie ersetze ich beide Elemente gleichzeitig (Avatare und Links)?

2
fjanecic

Vielleicht war ich vorher von der Arbeit ausgebrannt, aber heute Morgen habe ich denselben Code noch einmal durchgesehen und es geschafft, ihn richtig zum Laufen zu bringen.

if ( ! function_exists( 'comment_imgs' ) )
{
add_filter( 'get_comment_author_url', 'comment_imgs' );

function comment_imgs( $avatar, $id_or_email, $size, $default, $alt )
{
    global $comment;

    // We do not get the real comment with this filter.
    if ( empty ( $comment )
        or ! is_object( $comment )
        or empty ( $comment->comment_author_email )
        or ! $user = get_user_by( 'email', $comment->comment_author_email )
    )
    {
        return $uri;
    }

    return get_avatar( $user->ID );
}
}

Dank für den ursprünglichen Code geht an Thomas Scholz für das Verknüpfen mit Autorenseiten, diese Modifikation ruft lokale Avatare ab und zwei Funktionen stimmen nicht überein.

0
fjanecic