Je voudrais changer les liens des commentateurs comme indiqué dans cette capture d'écran:
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.
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:
Comme nous avons le global disponible, vous pouvez utiliser $comment->comment_author
En ce qui concerne les fonctions, vous pouvez utiliser get_comment_author()
ou comment_author()
en fonction de vos besoins en return
ou echo
.
Au Codex: Variables globales , vous pouvez avoir une vue d'ensemble à leur sujet.
Il y a le WP_Comment_Query
et la classe Walker_Comment
Par exemple, à la page de codex comment_author se trouve une liste de fonctions liées aux commentaires
De plus, je vous suggérerais de regarder à travers le comment-template.php
et le comment.php
pour en savoir plus sur tout cela.
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.
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.