web-dev-qa-db-fra.com

Remplacer les avatars de commentaires et les liens en même temps

J'essaie de remplacer les données de l'auteur de commentaires Wordpress:

1) Avatar (image téléchargée à la place de Gravatar)

2) Lien auteur (lien vers la page de l'auteur, seuls les membres pouvant commenter)

J'ai trouvé une excellente solution à cela à partir de cette question et j'ai implémenté le code suivant:

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 );
}
}

Le code fonctionne parfaitement pour remplacer les liens, et je souhaite également l'utiliser pour remplacer les avatars. J'ai créé une copie de la fonction et modifié les noms et le retour:

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 );
}
}

Cependant, cette fonction annule la première, je reçois donc des avatars mis à jour, mais je perds les liens de l'auteur. Comment remplacer les deux éléments en même temps (avatars et liens)?

2
fjanecic

J'étais peut-être déjà épuisé par mon travail, mais ce matin, j'ai essayé le même code et j'ai réussi à le faire fonctionner correctement.

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 );
}
}

Le code original est attribué à Thomas Scholz pour avoir créé un lien vers des pages d’auteurs. Cette modification récupère les avatars locaux et deux fonctions ne se contredisent pas.

0
fjanecic