WordPress : affichez ‘comment_form()’ à la place de ‘comment_reply_link()’ dans ‘wp_list_comments()’ personnalisé

Publié par Jean-Michel le

Je développe mon propre code pour afficher la liste des commentaires et le formulaire de commentaires.

Ce dont j’ai besoin, c’est de remplacer le bouton « répondre » (uniquement lorsqu’il est affiché), par un formulaire de commentaire , à côté du commentaire pour faire la réponse .

Tout le code que j’ai jusqu’à présent est le suivant. Quelqu’un peut-il m’aider à le réparer? Merci.

    <?php
    $postid = XXX;

    $comment_send = 'Send';
    $comment_reply = 'Leave a Message';
    $comment_reply_to = 'Reply';
    $comment_author = 'Name';
    $comment_email = 'E-Mail';
    $comment_body = 'Comment';
    $comment_url = 'Website';
    $comment_cookies_1 = ' By commenting you accept the';
    $comment_cookies_2 = ' Privacy Policy';
    $comment_before = 'Registration isn't required.';
    $comment_cancel = 'Cancel Reply';

    $comments_args = array(
        'fields' => array(
            'author' => '<p class="comment-form-author"><br /><input id="author" name="author" aria-required="true" placeholder="' . $comment_author .'"></input></p>',
            'email' => '<p class="comment-form-email"><br /><input id="email" name="email" placeholder="' . $comment_email .'"></input></p>',
            'url' => '<p class="comment-form-url"><br /><input id="url" name="url" placeholder="' . $comment_url .'"></input></p>',
            'cookies' => '<input type="checkbox" required>' . $comment_cookies_1 . '<a href="' . get_privacy_policy_url() . '">' . $comment_cookies_2 . '</a>',
        ),
        'label_submit' => __( $comment_send ),
        'title_reply' => __( $comment_reply),
        'cancel_reply_link' => __( $comment_cancel ),
        'comment_field' => '<p class="comment-form-comment"><br /><textarea id="comment" name="comment" aria-required="true" placeholder="' . $comment_body .'"></textarea></p>',
        'comment_notes_before' => __( $comment_before),
        'comment_notes_after' => ''
    );

    comment_form( $comments_args, $postid );
    ?>

    <ol class="commentlist">
    <?php wp_list_comments(array('callback' => 'custom_comments_format'), get_comments(array('post_id' => $post_id))); ?>

    <?php function custom_comments_format($comment, $args, $depth){ ?>
        <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
         <div id="comment-<?php comment_ID(); ?>">
              <div class="comment-author">
                <?php echo get_avatar( $comment, 56 ); ?>
                <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author()) ?>
              </div>
              <div class="comment-moderation">
                  <?php if ($comment->comment_approved == '0') : ?>
                     <p><?php _e('Your comment is awaiting moderation.') ?></p>
                  <?php endif; ?>
              </div>
              <div class="comment-meta commentmetadata">
                <p ><?php printf(__('%1$s at %2$s'), get_comment_date('j F, Y'),  get_comment_time()) ?><?php edit_comment_link(__('(Edit)'),'  ','') ?></p>
              </div>
              <div class="user-comment">
                <?php comment_text() ?>
              </div>
              <div class="reply">
                 <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
              </div>
         </div>
    <?php } ?>
    </ol>

Ps : La relation entre un formulaire et un commentaire de réponse est l’ entrée comment_parent . Je peux empiler un nouveau formulaire à la place du bouton de réponse, mais je ne sais pas comment définir l’ identifiant comment_parent dans le comment_form( $comments_args, $postid ) ; comme je l’ai fait auparavant pour personnaliser le formulaire lui-même.

    <input type="hidden" name="comment_parent" id="comment_parent" value="XXX">

      <div class="reply">
        <?php //comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))); ?>

        <?php
            if($depth < $args['max_depth']){
                $comments_args = array(
                    'comment_field' => '<input type='hidden' name='comment_parent' id='comment_parent' value=''.get_comment_ID().'' />'
                );
                comment_form( $comments_args, $postid );
            }
        ?>
      </div>

Solution n°1 trouvée

En suivant mes propres étapes, j’ai résolu le problème maintenant c’est FAIT comme ça.

      <div class="reply">
        <?php //comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))); ?>

        <?php
            if($depth < $args['max_depth']){

                $postid = $comment->comment_post_ID;
                $comments_args['submit_field'] = '<p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Send"> <input  type="hidden" name="comment_post_ID" value="'.$postid.'" id="comment_post_ID"> <input type="hidden" name="comment_parent" id="comment_parent" value="'.get_comment_ID().'"> </p>';

                comment_form( $comments_args, $postid );
            }
        ?>
      </div>

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *