¿configura los comentarios como predeterminados para las páginas y los tipos de publicaciones personalizadas?

20

Quiero desactivar los comentarios de forma predeterminada con páginas y tipos de publicación personalizados

Inicialmente, simplemente utilicé condicionales en la función de visualización de comentarios para evitar mostrar el bloque en estas páginas, pero necesito que el usuario pueda volver a activar los comentarios según sea necesario.

Fuzz suave
fuente
1
Sólo un recordatorio amistoso He añadido una respuesta a esta pregunta que creo que tiene el efecto deseado ..
t31os
1
Estoy seguro de que su función funciona bien, pero ya había seleccionado una respuesta que funciona para mi propósito.
Mild Fuzz

Respuestas:

9

Por lo que entiendo, desea configurar las páginas y algunos tipos de publicaciones personalizadas para que los comentarios estén 'desactivados' de forma predeterminada, mientras que las publicaciones seguirán utilizando la opción predeterminada (es decir, comentar 'activado'). Si este es el caso, la siguiente función lo hará.

function default_comments_off( $data ) {
    if( $data['post_type'] == 'page' && $data['post_status'] == 'auto-draft' ) {
        $data['comment_status'] = 0;
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_off' );
sorich87
fuente
1
esto falla cuando desea volver a activar los comentarios. Es necesario editarlo para que se ejecute solo una vez
Mild Fuzz el
1
no en una máquina en este momento, pero supongo que puede usar la mecánica de metadatos para verificar si hay meta, si no ejecuta la función, de lo contrario agregue el meta y ejecute la función.
Mild Fuzz
1
probado, esto no va a funcionar tan simplemente como eso porque el ID de publicación no está contenido en la variable $ data en su función.
Mild Fuzz
1
Lo probé (con WP 3.0) antes de enviar mi respuesta y funcionó. ¿Qué problema te encuentras? El ID de la publicación no está en $ data porque la publicación aún no se ha creado antes de ejecutar la función (mire el filtro en la función wp_insert_post). La función se ejecutará solo cuando visite wp-admin / post-new.php? Post-type = xxx, antes de ingresar cualquier contenido en los campos.
sorich87
1
en mi servidor de prueba, no puedo volver a activar los comentarios, están permanentemente desactivados.
Mild Fuzz
10

Cuando crea una nueva publicación (tipo personalizado o regular), WordPress llama get_default_post_to_editque luego establece los valores predeterminados que tendrá una nueva publicación.

Esta función proporciona algunos ganchos de filtro para cambiar el título, el contenido y el extracto predeterminados, pero desafortunadamente nada más ... sin embargo, cada filtro pasa el $postobjeto completo a la devolución de llamada, esencialmente esto significa que es posible redefinir varias propiedades (o solo una si nos gusta)

Esto debería funcionar para usted, simplemente agregue los tipos de publicación a los que el código debe aplicarse como casos dentro del conmutador ... (la película y la página son ejemplos) ...

function my_default_content( $post_content, $post ) {
    if( $post->post_type )
    switch( $post->post_type ) {
        case 'page':
        case 'movie':
            $post->comment_status = 'closed';
        break;
    }
    return $post_content;
}
add_filter( 'default_content', 'my_default_content', 10, 2 );

El código se probó en WP 3.0.1 y tiene el efecto deseado de deshabilitar los comentarios para los tipos de publicación específicamente mientras deja que otros hereden el estado predeterminado de la default_comment_statusopción.

Espero que ayude.... :)

t31os
fuente
2

He escrito un complemento para deshabilitar los comentarios en las páginas de forma predeterminada. http://wordpress.org/extend/plugins/page-comments-off-please/

Quizás eso ayude?


fuente
1
¡Parece excesivo dada la solución de 5 líneas en la respuesta de sorich87! Saludos sin embargo.
Mild Fuzz
1
En realidad no, hay muchos enfoques para abordar los requisitos de código, es solo un método diferente.
t31os
1

De acuerdo con este hilo , lo que está solicitando no es posible sin el uso de un complemento o función personalizada para lograrlo.

Travis Northcutt
fuente
1
No tengo problemas para escribir uno, solo necesito apuntar en la dirección correcta. Ganchos y filtros, etc. que pueden ayudar.
Mild Fuzz
1
Si terminas escribiendo uno, ¡comparte lo que hiciste aquí! Parece que un complemento que puede hacer eso tendría mucho uso.
Travis Northcutt
1

Recomiendo que sigas usando tus condicionales en la pantalla de comentarios, pero usa opciones para almacenar tu configuración condicional. Luego, puede agregar una página al menú Configuración que permita a los administradores activar o desactivar los comentarios según sea necesario.


Actualizar

Se me ocurre que desea establecer el valor predeterminado para comentar en "desactivado" como una configuración global en lugar de establecerlo en "desactivado" cada vez que crea una página. Esto es posible

Vaya a Configuración >> Discusión en la sección de administración de WordPress. En la primera sección ("Configuración de artículo predeterminada" verá una opción llamada "Permitir que las personas publiquen comentarios sobre nuevos artículos" ... desmarque esta opción.

Ahora, de forma predeterminada, los comentarios se desactivarán para todas las publicaciones nuevas, páginas y tipos de publicaciones personalizadas. Todavía puede volver a activar los comentarios caso por caso seleccionando la casilla de verificación apropiada en el cuadro meta "Discusión" en la pantalla de edición de publicación / página individual.

EAMann
fuente
1
Sin embargo, ya hay una opción allí. Simplemente lo quiero apagado por defecto.
Mild Fuzz
1
Ya hay una opción donde? ¿Te refieres al cuadro "Discusión" en la parte inferior de la pantalla de edición de publicación / página?
EAMann
1
Sí, solo quiero que eso esté desmarcado. La solución Sorich87 casi funciona. No en una máquina para probar nada todavía.
Mild Fuzz
-2

Si simplemente agrega este código en functions.php

<?php
add_post_type_support( 'your_custom_post_type', array( 'comments' ) );
?>

Vaya a la publicación, y en las opciones de la pantalla, marque "Discusión" y "Comentarios", puede habilitar / deshabilitar los comentarios para cada tipo de publicación personalizada.

kaizer1v
fuente
2
en realidad no responde la pregunta (aunque ya haya respondido)
Mild Fuzz