web-dev-qa-db-fra.com

Commentaire Auteur Nom Dans le formulaire de réponse

J'ai activé les réponses aux commentaires sur mon blog. Disons qu'il y a un commentaire que Nick a écrit ... quand je vais répondre, je veux afficher un message "Répondre à Nick" dans l'en-tête de formulaire de la réponse. Quelqu'un sait comment? Merci!

3
Arg Geo

La fonction WordPress comment_form_title ne fonctionne que pour les utilisateurs avec Javascript désactivé ou les pages sans JavaScript comment-reply.js.

WordPress peut ne pas résoudre cette limitation du tout. Deux tickets ont déjà été ouverts et fermés sans solution. http://core.trac.wordpress.org/ticket/10084 http://core.trac.wordpress.org/ticket/8639

Cependant, j'ai réussi à le faire fonctionner pour le thème par défaut vingteleven en utilisant certaines corrections. Voici le code que vous pouvez utiliser comme plugin.

<?php
/**
 * Plugin Name: Comment Form Title Fix
 * Plugin URI: 
 * Description: WordPress provides comment_form_title function to displays text based on comment reply status. This only affects users with Javascript disabled or pages without the comment-reply.js JavaScript loaded. This plugin provides dirty fix to remove this limitation.
 * Author: tamilsweet
 * Author URI: http://tamilg.in/
 * Version: 0.1
 * Limitation: Tested only with default comment form.
 */

define('CFTF_REPLY_TEXT', 'Leave a Reply');
define('CFTF_REPLY_TO_TEXT', 'Leave a Reply to %s');

// Enable jquery
add_action('init', 'my_script');
function my_script() {
    wp_enqueue_script('jquery');
}

add_filter('comment_reply_link', 'cftf_reply_link');
function cftf_reply_link($link) {
    global $comment;

    $author = get_comment_author();
    $replytext = sprintf( CFTF_REPLY_TO_TEXT, $author );

    $link = str_replace("onclick='return", "onclick='cftf_update_title(\"${replytext}\"); return", $link);
    return $link;
}

add_action('wp_footer', 'cftf_javascript');
function cftf_javascript() {
?>
<script type="text/javascript">
function cftf_update_title(title) {
    var temp = jQuery("#reply-title :first").html();
    jQuery("#reply-title").html(title + '<small>' +  temp + '</small>');
}

jQuery("#cancel-comment-reply-link").live('click', function() {
    var title = "<?php echo CFTF_REPLY_TEXT;?>";
    var temp = jQuery("#reply-title :first").html();
    jQuery("#reply-title").html(title + '<small>' +  temp + '</small>');
});
</script>
<?php
}

Rappelez-vous que cela peut ne pas fonctionner avec tous les thèmes.

Mise à jour: Pour que cela fonctionne avec le thème personnalisé utilisé par @Arg Geo. Remplacez la fonction cftf_javascript () comme ci-dessous

function cftf_javascript() {
?>
<script type="text/javascript">
function cftf_update_title(title) {
    jQuery("#reply-title").html(title);
}

jQuery("#cancel-comment-reply-link").live('click', function() {
    var title = "<?php echo CFTF_REPLY_TEXT;?>";
    jQuery("#reply-title").html(title);
});
</script>
<?php
}
2
tamilsweet

Depuis jQuery 1.7, la méthode .live() est obsolète. Utilisez .on() pour attacher des gestionnaires d’événements.

Dans le code fourni par tamilsweet, remplacez:

jQuery("#cancel-comment-reply-link").live('click', function() {

avec:

jQuery("#respond").on('click', '#cancel-comment-reply-link', function() {
1
Rod