[Résolu] Ajouter 1 meta aux commentaires // Afficher les comments selon la meta (Créer un compte)

  • Statut : non résolu
10 sujets de 1 à 10 (sur un total de 10)
  • Auteur
    Messages
  • #552101
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Bonjour à toutes et à tous,

    Ma configuration WP actuelle
    – Version de WordPress : 4.2.2
    – Version de PHP/MySQL : 5.1 (je crois)
    – Thème utilisé : Twentyfourteen-child
    – Extensions en place : Akismet, Better WordPress Recent Comments, Comment Popularity, NextScripts: Social Networks Auto-Poster, Contact Form 7, Subscribe to Comments Reloaded, Transposh Translation Filter…
    – Nom de l’hebergeur : OVH
    – Adresse du site : allwewish.org

    Sur notre site nous rassemblons les voeux et les solutions. Depuis 2009, j’intègre les solutions reçues via commentaires, emails, discussions ou glanées sur le web dans les articles qu’elles concernent (article=voeu). Aujourd’hui, j’étudie la possibilité d’utiliser l’outil commentaire comme un outil réel/automatique de proposition de solutions. J’ai déjà réussi à ajouter un titre au formulaire de commentaire et à afficher ce titre dans la wp_comment_list… pourtant pour pouvoir aller plus loin dans l’intégration, je devrais encore:

    1. Ajouter une meta ressemblant à une catégorie aux commentaires (ex: sans argent, sans le temps, sans la santé, dans tous les cas)
    Ceci ne me semble pas trop compliqué étant donné que je pourrais repartir de ma solution titre.

    Pour éviter la création de « catégories » farfelues, je pense également pouvoir repartir du tuto suivant pour présenter ma liste de quatre prédéfinies comme une liste déroulante:
    http://www.bobz.co/dynamically-populate-select-fields-choice-in-advanced-custom-fields/

    2. Afficher les commentaires au bas de l’article selon cette meta « catégorie »
    soit avec chaque « catégorie » affichée comme un onglet sur lequel le visiteur pourrait cliquer pour lire les solutions qui l’intéressent
    soit avec tous les commentaires affichés à la suite mais classés par « catégorie » avec la « catégorie » affichée au dessus de chacune des quatre listes.

    Avez-vous une idée, une solution, un tuto sur comment régler cette question d’affichage?
    J’ai beaucoup cherché en Français et en Anglais sans succès mais je n’ai peut-être pas cherché sur les bons mots clés…

    Un énorme merci d’avance pour votre aide!
    Bonne journée!

    #1013434
    Li-An
    Participant
    Maître WordPress
    28787 contributions

    Bon, je réponds un peu à côté – ma spécialité en ce moment – mais un plugin de livre d’or (testimonial) ou un formulaire puissant – mais payant – genre Gravity Forms ne serait-il pas plus adapté ? À mon avis, ce dernier doit vous apporter tous les outils nécessaires.

    #1013435
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Merci beaucoup pour votre réponse Li-An,

    J’avais trouvé Burnzone forums and commenting qui me semblait assez complet, sans permettre de titrer ni de « catégoriser » les interventions.

    A première vue, gravity forms pourrait le permettre mais nécessiterait d’insérer un formulaire à la fin de chaque article. Ca me semble un peu « usine à gaz », sans avoir encore regarder ce qui se passe dans les tables. Je tenterai le test demain (c’est déjà le soir où je suis) mais si quelqu’un à une solution pour mon point deux ou une autre idée de contournement… elle est vraiment la bienvenue.

    A vous lire,

    #1013436
    Li-An
    Participant
    Maître WordPress
    28787 contributions

    C’est carrément dans les commentaires classiques. Visiblement d’autres ont essayé mais le moteur WP n’a pas prévu ce cas de figure: http://wordpress.stackexchange.com/questions/168846/can-wordpress-comments-have-titles-and-taxonomy

    #1013437
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Merci Li-An,
    Après quelques soucis d’import-export de BDD chez OVH, je peux enfin travailler sur mon site tst et tenter de fusionner ces deux tuto:
    http://www.smashingmagazine.com/2012/05/adding-custom-fields-in-wordpress-comment-form/http://code.tutsplus.com/tutorials/how-to-create-custom-wordpress-writemeta-boxes–wp-20336

    J’arrive à ce code ci pour functions.php:

    /// Ajouter un titre et une catégorie aux COMMENTAIRES
    //Ajouter les champs titre et catégorie au formulaire pour les users loggés et non loggés
    add_action( ‘comment_form_logged_in_after’, ‘additional_fields’ );
    add_action( ‘comment_form_after_fields’, ‘additional_fields’ );

    function additional_fields () {
    echo ‘<p class="comment-form-title">‘.
    ‘<label for="title">‘ . __( ‘Titre (Je peux…)’ ) . ‘</label>‘.
    ‘</p>‘;

    echo ‘<p class="comment-form-cat">‘.
    ‘<label for="comment_cat">La solutions est applicable…</label>‘.
     ».
    ‘<option value="tout" >Dans tous les cas’.
    ‘<option value="argent" >Sans argent’.
    ‘<option value="temps" >Sans le temps’.
    ‘<option value="sante" >Sans la santé’.
    ‘</p>‘;
    }


    // Enregistrer le titre et la catégorie avec le commentaire

    add_action( ‘comment_post’, ‘save_comment_meta_data’ );

    function save_comment_meta_data( $comment_id ) {
    if ( ( isset( $_POST[‘title’] ) ) && ( $_POST[‘title’] !=  ») )
    $title = wp_filter_nohtml_kses($_POST[‘title’]);
    add_comment_meta( $comment_id, ‘title’, $title );

    if ( ( isset( $values[‘comment_cat’] ) ? esc_attr( $values[‘comment_cat’] ) :  »;
    add_comment_meta( $comment_id, ‘commen_cat’, $title );
    }

    Le problème, c’est que je ne suis pas un pro et que j’ai le message d’erreur suivant:

    Parse error: syntax error, unexpected  »

     » (T_CONSTANT_ENCAPSED_STRING) … on line 153

    Sachant que la ligne 153 de mon fichier est la suivante:

    echo ‘<p class="comment-form-cat">‘.

    J’ai tenté plusieurs corrections proposées et trouvées sur le web jusqu’ici sans succès. Je me demande si l’un de vous verrait la correction à apporter.

    Un énorme merci d’avance pour votre aide!
    Bonne journée,

    Thierry

    #1013438
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    OK, le point 1 fonctionne! ( :D:D:D )

    Je suis parti de ce tuto: http://ivetetecedor.com/how-to-use-a-drop-down-menu-for-wordpress-custom-fields/#comment-22612

    et j’ai adapté mon functions.php comme ce qui suit:

    /// Ajouter un titre et une catégorie (liste déroulante) aux COMMENTAIRES
    //Ajouter le champs titre et la liste de catégories au formulaire pour les users loggés et non loggés
    add_action( ‘comment_form_logged_in_after’, ‘additional_fields’ );
    add_action( ‘comment_form_after_fields’, ‘additional_fields’ );
    function additional_fields () {
    echo ‘<p class="comment-form-title">‘.
    ‘<label for="title">‘ . __( ‘Titre (Je peux…)’ ) . ‘</label>‘.
    ‘</p>‘;
    echo ‘<strong><label for="category">Cette solution est particulièrement utile…</label></strong>


    Dans tous les cas
    Sans argent
    Sans le temps
    Sans la santé
    ‘;
    }

    // Enregistrer le titre et la catégorie avec le commentaire
    add_action( ‘comment_post’, ‘save_comment_meta_data’ );
    function save_comment_meta_data( $comment_id ) {
    if ( ( isset( $_POST[‘title’] ) ) && ( $_POST[‘title’] !=  ») )
    $title = wp_filter_nohtml_kses($_POST[‘title’]);
    add_comment_meta( $comment_id, ‘title’, $title );
    if ( ( isset( $_POST[‘category’] ) ) && ( $_POST[‘category’] !=  ») )
    $category = wp_filter_nohtml_kses($_POST[‘category’]);
    add_comment_meta( $comment_id, ‘category’, $category );
    }

    Résultat: la catégorie sélectionnée est bien enregistrée comme une commentmeta!

    Bon maintenant il reste à trouver une façon claire d’organiser/présenter les commentaires en fonction de leur catégorie (et peut-être des votes des lecteurs?)… mais ça c’est pour demain (en espérant qu’un jour suffise//toute aide bienvenue :search: )

    #1013439
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Bon, le point 2 fonctionne aussi et plutôt proprement!

    Pour y arriver proprement, j’ai dû faire appel à un développeur sur Elance. Voici le code à insérer dans comments.php (si comme moi vous utilisez twentyfourteen-child ou un autre thème passant par ce template) ou directement dans un autre template:

     ‘Argent’,’Sans le temps’ =>  ‘Temps’ ,’Sans la santé’ => ‘Santé’ ,’Dans tous les cas’ =>  ‘Tous’ );
    $length = count($row);
    foreach($row as $key=>$value){
    echo ‘<span class="emphase_roze">‘.$key.’</span>‘;

    $args = array(
    ‘meta_key’ => ‘category’,
    ‘meta_value’ => $value,
    ‘post_id’ => get_the_ID()
    );
    $comments = get_comments($args);

    foreach($comments as $comment) :
    echo ‘<ol class="commentlist">‘;
    echo ‘<h2>‘ . get_comment_meta( $comment->comment_ID, ‘title’, true ) . ‘</h2>‘;
    echo ‘<h3>‘ . get_comment_meta( $comment->comment_ID, ‘category’, true ) . ‘</h3>‘;
    comment_text();
    echo ‘<div class="comment-meta">‘ . hmn_cp_the_comment_upvote_form();
    echo ‘<div class="comment-author vcard">‘ . get_avatar( $comment, $args[‘avatar_size’] );
    echo ‘Une solution proposée par ‘ . get_comment_author_link() . ‘</br>‘;
    printf( __(‘%1$s at %2$s’), get_comment_date(), get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), ' ', '' );
    echo '</div></div>‘;
    $reply_href = wp_make_link_relative(
    get_permalink( $postid )
    )
    .’?replytocom=’ .$comment->comment_ID. ‘#respond’;

    $reply_onclick = ‘return addComment.moveForm("comment-‘
    . $comment->comment_ID
    . ‘", "’
    . $comment->comment_ID
    . ‘", "respond", "’
    . $postid
    . ‘")’;?>
    <div class="reply">
    <a class="comment-reply-link custom-class" href=" » onClick= » »></a>
    </div>
    <?php
    echo '<div class="reply">‘ . comment_reply_link( array_merge( $args, array( ‘add_below’ => $add_below, ‘depth’ => $depth, ‘max_depth’ => $args[‘max_depth’] ) ) ) . ‘</div>‘;
    echo ‘</ol>‘;

    endforeach;

    }
    wp_reset_query();
    ?>


    <p class="no-comments"></p>


    Mise en garde
    Avec ceci, les commentaires s’affichent correctement et il est possible de voter pour ceux-ci (ce snippet peut planter si vous n’avez pas installé le plugin comment-popularity)… par contre il n’affiche pas les réponses… j’ai le code pour le faire. Si ça vous intéresse envoyez moi un msg

    En espérant aider ou aiguiller qqn…
    A bientôt,

    #1013440
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    ✅ (au fait)

    #1013441
    Li-An
    Participant
    Maître WordPress
    28787 contributions

    Merci beaucoup pour tous ces retours et commentaires. Vous aurez remarqué l’absence de réponse de ma part mais j’étais complètement largué pour le coup.

    #1013442
    Tche
    Participant
    Chevalier WordPress
    182 contributions

    Avec plaisir, en espérant que ça aide quelqu’un
    A bientôt,

10 sujets de 1 à 10 (sur un total de 10)
  • Vous devez être connecté pour répondre à ce sujet.