Je pense que je pourrais peut-être analyser l'URL du paramètre replytocom
et en obtenir l'ID de commentaire. Cependant, cela signifierait que mon plug-in ne serait pas entièrement compatible avec d'autres plug-ins capables de supprimer ce paramètre (notamment Yoast SEO ). En plus, ça fait un peu hacky. Y a-t-il un autre moyen?
Endgoal: J'ai besoin de cet ID de commentaire à utiliser dans une demande AJAX - pour extraire des données (telles que la profondeur du fil de commentaire) afin de pouvoir afficher des données personnalisées dans l'interface frontale.
Voici quelques idées:
Il est possible d'injecter du HTML personnalisé ou des attributs de données via le filtre comment_reply_link
, mais je pense qu'il serait préférable de le garder discret.
On pourrait essayer d’obtenir la valeur du commentaire parent à partir du formulaire de commentaire de réponse:
<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
après avoir été mis à jour avec la valeur correspondante.
Une autre approche consisterait à rechercher les identifiants dans le code HTML de la liste de commentaires:
Généré par la Walker_Comment::html5_comment()
:
<li id="comment-34" class="comment even thread-even depth-1">
<article id="div-comment-34" class="comment-body">
... cut...
Généré par la Walker_Comment::comment()
:
<li class="comment even thread-even depth-1 parent" id="comment-34">
<div id="div-comment-34" class="comment-body">
... cut...
On pourrait par exemple recherchez les deux cas, mais il est possible pour l'utilisateur de les remplacer par une sortie personnalisée.
Notez également les informations depth
ici.
On pourrait essayer d'analyser l'attribut onclick
du replyto link:
onclick='return addComment.moveForm( "div-comment-34", "34", "respond", "123" )'
Voici mon implémentation de la dernière suggestion de birgire (pour analyser le onclick):
jQuery(document).on( 'click', 'a.comment-reply-link', function( event ) {
// THIS PART GETS THE COMMENT ID
var hayStack = jQuery(this).attr('onclick');
var strawA = '"div-comment-';
var strawB = '"';
var tipNeedle = hayStack.lastIndexOf(strawA)+strawA.length;
var hayTruss = hayStack.substring(tipNeedle);
var endNeedle = hayTruss.indexOf(strawB);
var needle = hayTruss.substring(0, endNeedle);
alert(needle);
// optional: THIS PART LOOKS UP THE PARENT ID (php side not shown)
var datatopost = {
action: 'my_ajax_hook',
nonce: ajaxobject.nonce,
selected_comment_id: needle,
};
jQuery.ajax({
type: 'post',
dataType: 'json',
url: ajaxobject.ajaxurl,
data: datatopost,
error: function() { // Ajax request has failed
jQuery('#comment').val('An error has occurred');
},
success: function (response) { // Ajax request has succeeded
if (response.success) {
// JSON successfully received
alert(response.data.selected_comment_parent);
}
}
});
});