Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    828

    [wordpress] form commenti differente se loggato o meno

    Ho uno strano comportamento della comment-form nei post, a seconda che sia loggato o meno.
    Come da screenshot allegato, nel primo caso non mostra i campi nome/email/website, mentre nel secondo li mostra ma mette sotto il button invia.
    Inoltre, con l'ispector vedo che è tutto in un <div id="respond"> che da qualche parte leggo è deprecato e sarebbe sufficente usare <?php comment_form(); ?>, ma nei miei template è tutto un rimando di get_template e non riesco a trovare chi gestisce le commentform.
    Più che altro, quale potrebbe essere il motivo illustrato nello screenshot?
    Grazie per l'attenzione (e spero in una risposta)
    Immagini allegate Immagini allegate

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, prova dalla pagine delle impostazioni dove puoi gestire i commenti. Ci sono le opzioni per far inserire email, nome o altro di chi commenta come campo obbligatori. Nel caso non dovrebbe bastare può essere necessario agire appunto sui template.
    Potrebbe anche non bastare ad ogni modo... se escono i campi obbligatori, che tu li renda visibili o meno potrebbe esserci un controllo a monte sull'invio perchè richiesti.
    PS
    non ho capito se vuoi eliminare il blocco commenti o solo eliminare i campi da non loggato
    Ultima modifica di m4rko80; 28-10-2016 a 17:38

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    828
    Nelle impostazioni, se ti riferisci al "Gli utenti devono essere registrati e fare il login per poter inviare commenti", ti confermo che è disabilitato. Credo che invece una traccia sia in questo codice (parte del comment-template.php). Non so leggere bene il PHP, ma mi sembra di capire che all'inizio ci siano delle condizioni if-user-logged-in, mentre alla fine le parti submit_field e submit_button potrebbero essere invertite?
    :
    Codice PHP:
            <div id="respond" class="comment-respond">
                <?php
                
    echo $args['title_reply_before'];

                
    comment_form_title$args['title_reply'], $args['title_reply_to'] );

                echo 
    $args['cancel_reply_before'];

                
    cancel_comment_reply_link$args['cancel_reply_link'] );

                echo 
    $args['cancel_reply_after'];

                echo 
    $args['title_reply_after'];

                if ( 
    get_option'comment_registration' ) && !is_user_logged_in() ) :
                    echo 
    $args['must_log_in'];
                    
    do_action'comment_form_must_log_in_after' );
                else : 
    ?>
                    <form action="<?php echo esc_url$args['action'] ); ?>" method="post" id="<?php echo esc_attr$args['id_form'] ); ?>" class="<?php echo esc_attr$args['class_form'] ); ?>"<?php echo $html5 ' novalidate' ''?>>
                        <?php do_action'comment_form_top' );

                        if ( 
    is_user_logged_in() ) :
                            
                            echo 
    apply_filters'comment_form_logged_in'$args['logged_in_as'], $commenter$user_identity );

                            
                            
    do_action'comment_form_logged_in_after'$commenter$user_identity );

                        else :

                            echo 
    $args['comment_notes_before'];

                        endif;

                        
    // Prepare an array of all fields, including the textarea
                        
    $comment_fields = array( 'comment' => $args['comment_field'] ) + (array) $args['fields'];

                        
    $comment_fields apply_filters'comment_form_fields'$comment_fields );

                        
    // Get an array of field names, excluding the textarea
                        
    $comment_field_keys array_diffarray_keys$comment_fields ), array( 'comment' ) );

                        
    // Get the first and the last field name, excluding the textarea
                        
    $first_field reset$comment_field_keys );
                        
    $last_field  end$comment_field_keys );

                        foreach ( 
    $comment_fields as $name => $field ) {

                            if ( 
    'comment' === $name ) {

                               
                                echo 
    apply_filters'comment_form_field_comment'$field );

                                echo 
    $args['comment_notes_after'];

                            } elseif ( ! 
    is_user_logged_in() ) {

                                if ( 
    $first_field === $name ) {
                                   
                                    
    do_action'comment_form_before_fields' );
                                }

                                
                                echo 
    apply_filters"comment_form_field_{$name}"$field ) . "\n";

                                if ( 
    $last_field === $name ) {
                                    
                                    
    do_action'comment_form_after_fields' );
                                }
                            }
                        }

                        
    $submit_button sprintf(
                            
    $args['submit_button'],
                            
    esc_attr$args['name_submit'] ),
                            
    esc_attr$args['id_submit'] ),
                            
    esc_attr$args['class_submit'] ),
                            
    esc_attr$args['label_submit'] )
                        );

                        
                        
    $submit_button apply_filters'comment_form_submit_button'$submit_button$args );

                        
    $submit_field sprintf(
                            
    $args['submit_field'],
                            
    $submit_button,
                            
    get_comment_id_fields$post_id )
                        );

                        
                        echo 
    apply_filters'comment_form_submit_field'$submit_field$args );

                        
    do_action'comment_form'$post_id );
                        
    ?>
                    </form>
                <?php endif; ?>
            </div><!-- #respond -->

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Nella prima parte c'è un controllo per la quale se richiesta la regisgtrazione e non si è loggati, chiede registrazione.
    Altrimenti se loggati mostra un tipo di form oppure l'altra ( penso sia il tuo caso).
    Questa dovrebbe essere la parte che mostra i campi aggiuntivi
    codice:
      foreach ( $comment_fields as $name => $field ) {
    
                            if ( 'comment' === $name ) {
    
                               
                                echo apply_filters( 'comment_form_field_comment', $field );
    
                                echo $args['comment_notes_after'];
    
                            } elseif ( ! is_user_logged_in() ) {
    
                                if ( $first_field === $name ) {
                                   
                                    do_action( 'comment_form_before_fields' );
                                }
    
                                
                                echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
    
                                if ( $last_field === $name ) {
                                    
                                    do_action( 'comment_form_after_fields' );
                                }
                            }
                        }
    

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    828
    Credo anch'io che la parte in gioco sia quella. Non sapendo il PHP non so se si possono spostare gli if sopra o sotto. Il problema è che questo è un file Core, da evitare quindi le modifiche...
    Il proplema sta anche nella demo degli autori del tema.

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Mi son perso qualcosa forse come risultato finale cosa vorresti ottenere?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    828
    beh, semplice. Mi sta anche bene che non vengano mostrati i campi nome/email/website quando si è loggati, ma almeno che il button invia stia sotto e non sopra di loro.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.