web-dev-qa-db-fra.com

Comment changer les liens des commentateurs vers/user/user_id?

Je voudrais changer les liens des commentateurs comme indiqué dans cette capture d'écran:

screenshot

Dans mon plugin de test sur GitHub , j'ai d'abord essayé le code suivant:

define('PROFILE', '<a href="/user/%s" rel="external nofollow" class="url">%s</a>');

function get_comment_author_link($cid) {
   $uid = get_comment_author($cid);
   return sprintf(PROFILE, $uid->ID, $uid->name);
}

add_action('get_comment_author_link',  'get_comment_author_link');

Mais alors, en étudiant le fichier wp-includes/comment-template.php, j’ai réalisé que l’argument de get_comment_author_link n’est pas un ID de commentaire, mais une chaîne contenant <a href="...">...</a> et que je ne peux donc pas utiliser ce hook pour mon usage (car l’ID utilisateur ne peut pas être trouvé dans le crochet).

Veuillez me conseiller un crochet ou un moyen approprié pour modifier les liens des commentateurs.

1
Alexander Farber

Vous pouvez utiliser le crochet get_comment_author_link , qui fait partie de la balise de modèle get_comment_author_link() , comme le suggère déjà votre question. Ensuite, vous devez seulement obtenir le user_id correspondant, ce qui peut être fait via le $comment global, et construire le lien souhaité en conséquence.

Exemple d'utilisation comme indiqué ci-dessous:

add_filter( 'get_comment_author_link', 'wpse144835_custom_comment_author_link' );
function wpse144835_custom_comment_author_link( $link ) {
    global $comment;
    $comment_user_id = $comment->user_id;
    // code to create the new link
    return $new_link;
}



Modifier:

En réponse à vos questions, le commentaire correspondant est malheureusement supprimé. Il s’agit donc maintenant d’une sorte de liste de présélection informative. Il y a beaucoup de choses là-dedans, beaucoup trop pour y répondre, mais je vous donne quelques informations supplémentaires:

2
Nicolai

Pourriez-vous essayer:

 $id = get_comment( get_comment_ID() )->user_id;

Je viens de trouver cette solution en cherchant sur Google, mais je n'ai pas d'environnement pour le tester.

0
Jonathan Lafleur

La sortie de cette fonction est une balise a contenant un lien vers le profil de l'auteur. Son entrée est un identifiant.

Si vous souhaitez modifier la sortie de cette fonction, vous avez besoin d'un filtre et vous devez str_replace le a-tag (ou une méthode similaire agissant sur la chaîne). (voir où modifier get_comment_author_link ()? )

Je pense que la question la plus importante est: qu'est-ce que vous essayez exactement d'atteindre ici?

En théorie, le lien des commentateurs pourrait être implémenté différemment dans chaque thème/plugin. Cela pourrait être fait avec get_comment_author_url () ou récupéré directement à partir de l'objet de commentaire avec get_comment (), ou de toute autre manière.

Cependant, pour modifier la sortie de get_comment_author_link (), voir l'exemple ci-dessus.

0
Pim