• User

    Limitare numero di commenti per user su post

    Ciao a tutti,
    sto cercando un plugin o comunque una soluzione che mi permetta di dire a wordpress: per ciascun post, ogni utente può lasciare solo un commento.
    Ho installato il plugin "comment rating field plugin" che aggiunge le stelline di gradimento prima del commento, ora dovrei limitare l'utente a commentare una sola volta ciascun articolo. Chi mi può aiutare? 😉

    Grazie in anticipo


  • Moderatore

    Non l'ho provato, ma in linea teorica, funziona 😉
    Ah, ovviamente non puoi controllare se l'utente non loggato ha già commentato

    
    <?php
    //Controllo se l'utente ha già commentato
    // globalizzo la variabile $current_user e $post
    global $current_user, $post;
    // se l'utente non è loggato, mostro il comment_form
    if ( !is_user_logged_in() ) {
        comment_form();
        } else {
        // altrimenti eseguo il controllo
        $usercomment = get_comments(array('user_id' => $current_user->ID, 'post_id'=>$post->ID) );
        // Quindi se ho commentato:
        if($usercomment) { 
            echo '<p>Grazie per aver già commentato questo post!</p>';
        
        } else {
            // altrimenti mostro il comment_form
            comment_form(); 
        } 
    }
    ?>
    
    

  • User

    Ciao, il codice funziona benissimo, grazie :D.. il problema è che non so dove metterlo nel mio tema .

    Ti spiego: se lo metto in /wp-content/themes/nometema/comments.php funziona tutto benissimo

    riga 76 al posto di <?php comment_form(); ?>
    metto il tuo codice)

    In sostenza verifica se l'utente è loggato e guarda se ha inserito il commento. Se ha già lasciato un commento sul post esce la scritta "Grazie per aver già commentato questo articolo", (direttamente nella pagina in fondo all'elenco dei commenti, proprio al posto della form) in caso contrario gli fa vedere la form x commentare. OTTIMO!!!!!!! Poi vado nel tema.... e... comments.php non c'è. :arrabbiato:

    File alternativo? se lo metto in wp-comments carica una pagina bianca con la scritta, ma non c'è più tema ne niente.. devo fare indietro con la freccia...


  • Moderatore

    Lo inserisci nel file page.php e single.php allo stesso modo di come lo hai inserito nel tema di prova.

    analizzi il codice, e dove vedi il richiamo alla funzione comment_form(); inserisci il codice.
    Presta attenzione perchè alcuni template utilizzando il file content.php per gestire i contenuti e i commenti.
    Insomma, da un occhio preciso, sapendo che: page.php è il template delle pagine, single.php è il template dell'articolo, index.php è la pagina di default.

    Fammi sapere


  • Moderatore

    Faccio un edit al volo.
    mi posti la pagina single.php ?
    Te la correggo io.
    In alternativa, puoi crearti il file comments.php se guendo la guida su i codex (2 min )

    Ma prima postami il file 😉


  • User

    Ti ringrazio, ho trovato il file qui

    /wp-includes/theme-compat/comments.php. Non mi era mai capitato.

    è personalizzato infatti il plugin per avere le stelline sul commento non funziona, ma in compenso ho implementato il codice e funziona tutto bene. Consigli comunque di metterlo in single.php?
    non usa il classico comment_form(); ma

    <?php
    // If comments are open or we have at least one comment, load up the comment template
    if ( comments_open() || '0' != get_comments_number() )
    comments_template();
    ?>

    PS il tema è flatsome


  • Moderatore

    Non devi mai mettere mano sulle cartelle wp-admin e wp-include, rischi di perdere stabilità del cms e soprattutto, appena aggiorni wordpress perdi tutto il 'custom' che hai creato.
    Wordpress mette a disposizione il file functions.php per creare nuove modifiche a tutto wordpress, personalizzando gli hook o aggiungerne di nuovi.
    Di solito ogni template ha il file comments.php se non c'è l'ha o si crea e per questo, basta che accedi ai codex di wordpress e cerchi comments template, oppure modifichi i file di tuo interesse o meglio ancora, ti crei un hook.
    Comunque, ripeto, se mi posti il codice relativo al file single.php te lo modifico e te lo ri-posto corretto.


  • User

    Sono rimasta fregata...il sistema di commenti non va bene per il mio plugin. Devo usare *comment_form();

    vedo se riesco a non fare pasticci e* a sostituire quella form di commenti


  • Moderatore

    Ahahahah,
    posta il codice, ci metto 2 minuti a correggerlo 😄
    Oppure, leggi qui:
    codex.wordpress.org/Function_Reference/comments_template


  • User

    ho rimesso tutto come prima e modificato single.php nel child


  • Moderatore

    Spero riesca nel tuo intento, io la mia buona volontà ce l'ho messa 😄
    Cmq se hai problemi scrivimi a info(@)mygraphicsweb(.)it
    Nel limite del possibile rispondo immediatamente


  • User

    😉 ce l'ho fatta. Sono abbastanza testarda, mi piace sbatterci la testa molte volte. Approfitto della situazione per chiederti se hai mai usato mycred per wordpress


  • Moderatore

    Sono contento che ci sei riuscita 🙂
    Cmq no, non ho mai utilizzato quel plugin. Che funzioni ha?


  • User

    Si tratta di un sistema di assegnazione punti. In base alle azioni sul sito che un utente fa ( login giornalielo, acquisti dal sito, condivisione di un contenuto etc..) guadagna dei punti e finisce una classifica. Il gestore del sito poi può decidere di assegnare dei premi ai primi classificati o trasformare in soldi questi punti o altro ancora.
    Gratuito con degli add-on a pagamento mycred . me/