Come rimuovere la sezione commenti solo dalle pagine, non dagli articoli?
Come rimuovere la sezione commenti solo dalle pagine, non dagli articoli?

Se desideri visualizzare i commenti e il modulo dei commenti sugli articoli ma non sulle pagine, devi suddividere la logica nel tuo file template per chiamare comments_template()
in base al tipo di elemento visualizzato (articolo o pagina). Ci sono due modi per farlo: puoi mantenere un unico file template per entrambi gli elementi e utilizzare i tag condizionali:
if (!is_page()) {
comments_template();
}
L'altra opzione è utilizzare sia un file template single.php
per i tuoi articoli sia un page.php
per le tue pagine (vedi la Gerarchia dei Template per maggiori informazioni). Basta omettere la chiamata a comments_template()
nel template della pagina. Se non ci sono altre differenze tra il layout di un articolo e quello di una pagina, un file template combinato con i tag condizionali è probabilmente migliore per la manutenibilità.
Se vuoi farlo "a distanza", ovvero dove il file template include già una chiamata a comments_template()
, puoi creare un plugin che si aggancia al filtro comments_template
e lo reindirizza a un file vuoto nella directory (beh, potrebbe anche essere lo stesso file del plugin - poiché contiene solo codice PHP, non visualizzerà nulla - ma questo potrebbe confondere gli altri).
add_filter('comments_template', 'no_comments_on_page');
function no_comments_on_page( $file )
{
if ( is_page() ) {
$file = dirname( __FILE__ ) . '/empty-file.php';
}
return $file;
}

Ciao Jan, grazie per la risposta. Esiste qualche plugin per farlo senza dover intervenire sul codice?

@metal-gear-solid: ho aggiornato la mia risposta con un esempio per farlo tramite un plugin. Non so se esista un plugin che faccia questo, ma è davvero semplice quindi puoi inserirlo tu stesso in un file plugin.

Manualmente posso rimuovere la sezione commenti per ogni pagina deselezionando queste opzioni http://farm2.static.flickr.com/1280/5179502796_b9e09c10ba.jpg. E ho appena trovato questo plugin che manterrà queste caselle deselezionate per tutte le pagine, ma non per gli articoli http://wordpress.org/extend/plugins/page-comments-off-please/

Mi piace molto questo snippet dal tema Hybrid all'inizio del template comments.php
che disabilita in modo flessibile i commenti se non sono supportati o disabilitati su base per-post/per-pagina:
if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) )
return;
