¿Por qué los comentarios están desactivados por defecto en mis custom_post_types?
Estoy usando un custom post type + taxonomías en una solución de podcast para un cliente. La configuración (ajustes >> comentarios) está establecida en "permitir comentarios". Cuando agrego/edito entradas bajo la pestaña "entradas", los comentarios están habilitados por defecto.
Sin embargo, cuando agrego/edito entradas bajo el custom post type (podcast), los comentarios están desactivados por defecto.
El usuario aún puede habilitar manualmente los comentarios para cada entrada, pero obviamente esto no es ideal. ¿Sugerencias?
ACTUALIZACIÓN: Código relevante en functions.php
function create_my_post_types() {
register_post_type( 'podcast',
array(
'labels' => array(
'name' => __( 'Podcast' ),
'singular_name' => __( 'Podcast' ),
'new_item' => __( 'Nuevo Episodio' ),
'add_new_item' => __( 'Agregar Nuevo Episodio' )
),
'public' => true,
'hierarchical' => true,
'menu_icon' => get_stylesheet_directory_uri() . '/assets/podcast-icon.png', // 16px16
'menu_position' => 9,
'supports' => array( 'title', 'editor', 'comments', 'post-templates'),
'register_meta_box_cb' => 'add_podcast_metaboxes' // Esto registra el metabox que agregaremos más tarde.
)
);
}

Vale - así que he resuelto esto. Este parece ser el problema.
Los comentarios están desactivados por defecto para los tipos de contenido personalizados (custom-post-types). Esto ocurre incluso si los tienes activados en la configuración general.
Para solucionarlo, todo lo que tuve que hacer fue lo siguiente:
- En AJUSTES > DISCUSIÓN desmarcar la opción "Permitir a las personas publicar comentarios en nuevos artículos".
- Hacer clic en "Guardar cambios".
- Ahora volver y volver a marcar "Permitir a las personas publicar comentarios en nuevos artículos".
- Hacer clic en "Guardar cambios".
Parece que para los tipos de contenido personalizados necesitas reactivar esta configuración. Todos los nuevos posts creados para tipos de contenido personalizados tendrán la casilla activada por defecto. Los posts existentes mantendrán su configuración anterior. Supongo que ocurre lo mismo con los trackbacks. Espero que esto ayude a alguien...

Este es el estado por defecto... necesitas cambiar la línea "Supports" donde construyes tu tipo de contenido personalizado.
Es decir esta línea:
// o algo similar que empiece igual
'supports' => array('title','editor','author','excerpt','revisions'),
Por esta línea:
'supports' => array('title','editor','author','excerpt','comments','revisions'),
Espero que esto ayude.
Saludos, Sagive.
FUNCIÓN AÑADIDA (DENTRO DEL ARCHIVO DE FUNCIONES):
function default_comments_on( $data ) {
if( $data['post_type'] == 'tu_nombre_de_post_personalizado' ) {
$data['comment_status'] = 1;
}
return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_on' );

Hola - Ya tengo ese código ingresado correctamente en functions.php. Según entiendo, el cuadro de comentarios ni siquiera aparecería si no estuviera habilitado de la manera que describes. Mi problema es que aparece, pero está desmarcado por defecto aunque he configurado que esté habilitado por defecto en Ajustes > Discusión.

Ohh... creo que solo tú ves esa opción de esa manera... son tus preferencias... asegúrate de marcar ambas opciones (o la que desees) en el módulo de Discusión (ver imagen: http://en.support.files.wordpress.com/2009/12/wpcom-discussion-module-off.png) y debería estar solucionado. Más información sobre esos ajustes puedes encontrarla aquí: http://en.support.wordpress.com/enable-disable-comments/

Supongo que no he sido claro... esas opciones ya están marcadas y el resultado es que los comentarios están habilitados para todas mis publicaciones EXCEPTO los tipos de contenido personalizados que todavía tienen que ser editados manualmente. Parece un error, o algo que necesito añadir en functions.php pero no encuentro nada en el codex.

espera - no, esa vez lo malinterpreté - estás hablando del módulo en la ventana de edición de entradas. Definitivamente puedo habilitar comentarios o trackbacks marcando esas casillas. SIN EMBARGO, me gustaría que esas casillas estuvieran marcadas por defecto para que mi cliente no tenga que recordar hacerlo CADA vez que publique un nuevo episodio de podcast. Pensé que habilitar comentarios en la sección Discusión >> Configuración del área de Admin lo resolvería, pero aún aparece desmarcado por defecto.

Sigo pensando que si aparece (la casilla de comentarios/trackback) y guardas la entrada con ellos activados, se convertiría en el estado por defecto... PERO he añadido algo de código a mi respuesta original -lo probé en la versión 3.01 que estoy usando.. espero que ayude.

Ninguna de las siguientes sugerencias funcionó para mí. La función de Sagive SEO casi funcionó. Verifiqué mi base de datos y descubrí que los únicos valores para comment_status son 'open' (abierto) y 'closed' (cerrado). Esa función insertaba 1 como valor. Modifiqué la función y ahora parece funcionar perfectamente. Espero que esto ayude a alguien.
function default_comments_on( $data ) {
if( $data['post_type'] == 'your_custom_post_type_name' ) {
$data['comment_status'] = 'open';
}
return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_on' );
