Cómo eliminar la sección de comentarios solo de las páginas, no de las entradas
Cómo eliminar la sección de comentarios solo de las páginas, no de las entradas

Si deseas mostrar comentarios y el formulario de comentarios en entradas pero no en páginas, necesitas dividir la lógica en tu archivo de plantilla para llamar a comments_template()
dependiendo del tipo de elemento mostrado (entrada o página). Hay dos formas de hacer esto: puedes mantener un archivo de plantilla para ambos elementos y usar etiquetas condicionales:
if (!is_page()) {
comments_template();
}
La otra opción es usar tanto un archivo de plantilla single.php
para tus entradas como un page.php
para tus páginas (consulta la Jerarquía de Plantillas para más información). Simplemente omite la llamada a comments_template()
en la plantilla de página. Si no hay otras diferencias entre el diseño de una entrada y una página, un archivo de plantilla combinado con etiquetas condicionales probablemente sea mejor para la mantenibilidad.
Si deseas hacer esto "a distancia", es decir, donde el archivo de plantilla ya incluye una llamada a comments_template()
, puedes crear un plugin que se enganche al filtro comments_template
y lo redirija a un archivo vacío en el directorio (bueno, incluso podría ser el mismo archivo del plugin, ya que solo contiene código PHP, no mostrará nada, pero esto podría confundir a otros).
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;
}

Hola Jan, Gracias por la respuesta. ¿Existe algún plugin para hacer esto sin tener que modificar código?

@metal-gear-solid: He actualizado mi respuesta con un ejemplo para hacer esto desde un plugin. No sé si existe un plugin que haga esto, pero es realmente fácil así que puedes colocarlo tú mismo en un archivo de plugin.

Manualmente puedo eliminar la sección de comentarios para cada página desmarcando estas opciones http://farm2.static.flickr.com/1280/5179502796_b9e09c10ba.jpg. Y acabo de encontrar este plugin que mantendrá estas casillas desmarcadas para todas las páginas, pero no para las entradas http://wordpress.org/extend/plugins/page-comments-off-please/

Me gusta mucho este fragmento del tema Hybrid al inicio de la plantilla comments.php
que deshabilitará de manera flexible los comentarios si no son compatibles o están desactivados en una base por entrada/página:
if ( !post_type_supports( get_post_type(), 'comments' ) || ( !have_comments() && !comments_open() && !pings_open() ) )
return;
