Je vais expliquer ce que j'essaie d'accomplir.
Je voudrais avoir des commentaires réguliers non-filetés (plats / classiques) avec un lien de réponse à chaque commentaire. Lorsque quelqu'un répond à un commentaire, le commentaire de réponse se terminera en haut (ou en bas) en tant que dernier commentaire, comme il le ferait dans les commentaires non filetés par défaut, mais contrairement au commentaire non fileté par défaut, la réponse devrait afficher un lien vers le commentaire / auteur d'origine.
Il y a une solution proposée sur le forum wordpress:
http://wordpress.org/support/topic/reply-to-link-for-chronological-non-threaded-comments
Je n'arrive tout simplement pas à le faire fonctionner. Je ne sais pas dans quels fichiers l'affiche place les différents morceaux de code. J'ai essayé d'utiliser le code et d'accrocher une fonction à comment_post:
add_action('comment_post', 'print_reply_link', 10, 2);
function print_reply_link( $comment_id, $approved ){
if( $approved ){
$comment = get_comment( $comment_id );
if ( $comment->comment_parent ) {
$parent = get_comment( $comment->comment_parent );
$parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
printf( ' in reply to <a href="%1$s">%2$s</a>', $parent_link, $parent->comment_author );
}
}
}
Cela a renvoyé une page vierge avec "en réponse à authorname ". Après avoir rechargé le message, un commentaire de réponse s'affiche correctement mais sans aucun lien vers le commentaire d'origine
Mes compétences en codage sont vraiment très basiques, donc je ne sais pas comment je dois procéder. Serait très reconnaissant pour toute aide.
href
laa
qui suit « dans to` de réponse selon l' « outil Inspecter l' élément » dans Chrome (ou similaire dans votre navigateur de choix)?s
entrée%1$s
signifie que l'argument est traité et présenté comme une chaîne. Ceci est expliqué en détail dans le manuel php pour la fonction sprintfRéponses:
C'est ma solution et non la solution proposée suggérée sur les forums WordPress. Cela s'avère assez facile, mais implique quelques étapes.
1) Accédez à wp-admin-> Paramètres-> Discussion et désactivez les commentaires filetés. Cela désactivera le filetage, ce que nous voulons, mais nous supprimera également la possibilité de «répondre à» un commentaire particulier. Nous devons remettre cela.
2) Ajoutez le script ci-dessous au functions.php de votre thème ou à un plugin.
3) L'impression des commentaires est gérée par un rappel à wp_list_comments . TwentyEleven utilise la fonction
twentyeleven_comment()
dans sonfunctions.php
. Si votre thème n'a pas de rappel, vous devrez en créer un. Par défaut, le contenu de la méthode start_el de la classe Walker_Comment dans "wp-includes / comment-template.php" est utilisé. Copiez cela ou copiez le rappel du thème et renommez la fonction enfake_threaded_comment
.3) Recherchez la fonction wp_list_comments dans votre thème
comments.php
et modifiez le rappel. Cela devrait ressembler à:4) Maintenant, nous allons tricher un peu. Dans ce rappel, 'fake_threaded_comment', il devrait y avoir un appel à la fonction comment_reply_link . Nous devons le modifier afin de passer des arguments codés en dur 'depth' et 'max_depth'. Nous mettons la «profondeur» à 1 et max_depth à 2. Cela récupérera notre bouton / lien «Répondre».
5) Configurez le lien vers le commentaire parent. À côté de la fonction de rappel, vous avez peut-être remarqué des références à
$comment
.$comment->comment_parent
est l'ID du commentaire auquel on a répondu etget_comment_link($comment->comment_parent)
donne l'URL du commentaire parent (pas le balisage d'ancrage complet).get_comment($comment->comment_parent)
obtiendra les données du commentaire parent. Donc, quelque chose comme ...C'est tout. Vous pouvez maintenant commenter des commentaires particuliers, mais une fois publié, le commentaire apparaîtra à la fin ou au début de la liste de commentaires en fonction de l'ordre de chargement.
Testé avec TwentyEleven sur WordPress 3.4.1 (légèrement dépassé mais il est déjà sur mon serveur de développement). Je suis sûr qu'il y a des choses que les thèmes ou les plugins pourraient faire pour casser cela, mais je ne pense pas qu'un thème ou un plugin bien comporté le briserait.
C'est ma bonne action pour la journée. Veuillez me faire savoir si quelque chose ne va pas.
la source