web-dev-qa-db-fra.com

Utilisation de filter pour ajouter des champs supplémentaires à comment_form ()

Je veux ajouter un champ aux commentaires et avoir utilisé ces codes.

functions.php

function my_fields($fields) {
    $fields['url2'] = '<p class="comment-form-url2">
                          <label for="url2">URL hittad på webben</label>
                          <input id="url2" name="url2" type="text" value="" size="30" />
                       </p>';
    return $fields;
}
add_filter('comment_form_default_fields','my_fields');

comments.php

comment_form();

Des questions

  1. Il n'ajoute pas de champ supplémentaire dans le commentaire de l'administrateur. Cela devrait-il ou non?
  2. Il ne semble pas sauver le champ supplémentaire. J'ai essayé de vider le tableau de commentaires. Pourquoi pas?
1
Jens Törnell

Il y a quelques autres crochets dans le formulaire de commentaire que vous pouvez utiliser. L’accès ne s’affiche que si l’utilisateur n’est pas connecté. Si vous souhaitez utiliser ce champ pour tous les utilisateurs (connectés ou non), vous devez ajouter votre formulaire en accrochant à la fois comment_form_after_fields et comment_form_logged_in_after, actions, et faire écho sur le nouveau champ.

<?php
add_action( 'comment_form_logged_in_after', 'pmg_comment_tut_fields' );
add_action( 'comment_form_after_fields', 'pmg_comment_tut_fields' );
function pmg_comment_tut_fields()
{
    ?>
    <p class="comment-form-title">
        <label for="pmg_comment_title"><?php _e( 'Title' ); ?></label>
        <input type="text" name="pmg_comment_title" id="pmg_comment_title" />
    </p>
    <?php
}

Découvrez ce tutoriel j'ai écrit (l'exemple ci-dessus en est tiré). Couvre tout, de l'ajout de champs à la sauvegarde des données, en passant par l'ajout d'une méta-boîte afin que vous puissiez également éditer les champs supplémentaires au dos.

6
chrisguitarguy

Pour enregistrer votre champ supplémentaire, vous devez faire:

function save_comment_meta_data( $comment_id ) {
    add_comment_meta( $comment_id, 'extra_field', $_POST[ 'extra_field' ] );
}
add_action( 'comment_post', 'save_comment_meta_data' );

Voir ce didacticiel de Nice couvrant les champs supplémentaires dans les formulaires de commentaires.

4
mike23

Jetez un coup d'oeil à ce plugin http://www.solaceten.info

(divulgation: je suis le co-auteur. Le plugin est gratuit, mais n'est plus maintenu)

0
Sol