definir comentários desativados como padrão para páginas e tipos de postagem personalizados?

20

Quero desativar os comentários por padrão com páginas e tipos de postagem personalizados

Inicialmente, simplesmente usei condicionais na função de exibição de comentários para evitar a exibição do bloco nessas páginas, mas preciso que o usuário possa ativar os comentários novamente, conforme necessário.

Fuzz leve
fonte
1
Apenas um lembrete amigável eu adicionei uma resposta a esta pergunta que eu acredito tem o efeito desejado ..
t31os
1
Tenho certeza de que sua função funciona bem, mas eu já havia selecionado uma resposta que funcione para meu propósito.
Mild Fuzz
Nota: Ticket Trac relacionado # 12991
Chip Bennett

Respostas:

9

Pelo que entendi, você deseja definir páginas e alguns tipos de postagem personalizados para que os comentários estejam "desativados" por padrão, enquanto as postagens ainda usarão a opção padrão (por exemplo, comentando "ativado"). Se for esse o caso, a seguinte função fará isso.

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
fonte
1
isso falha quando você deseja ativar os comentários novamente. Ele precisa ser editado para que ele será executado apenas uma vez
Mild Fuzz
1
não em uma máquina no momento, mas acho que você pode usar a mecânica de metadados para verificar a meta, se não executar a função, adicione a meta e execute a função.
Fild suave
1
testado, isso não vai funcionar tão simplesmente quanto isso, porque o ID da postagem não está contido no $ data var na sua função.
Mild Fuzz
1
Eu testei (com o WP 3.0) antes de enviar minha resposta e funcionou. Que problema você está encontrando? O ID da postagem não está em $ data porque a postagem ainda não foi criada antes da execução da função (veja o filtro na função wp_insert_post). A função será executada somente quando você visitar wp-admin / post-new.php? Post-type = xxx, antes de inserir qualquer conteúdo nos campos.
sorich87
1
no meu servidor de teste, não consigo ativar os comentários novamente, eles estão sempre desativados.
Mild Fuzz
10

Quando você cria uma nova postagem (tipo personalizado ou regular), o WordPress chama, get_default_post_to_editque define os valores padrão que uma nova postagem terá.

Essa função fornece alguns ganchos de filtro para alterar o título, o conteúdo e o trecho padrão, mas infelizmente nada mais ... porém cada filtro passa o $postobjeto completo para o retorno de chamada, essencialmente isso significa que é possível redefinir várias propriedades (ou apenas uma se nós gostamos)

Isso deve funcionar para você, basta adicionar os tipos de postagem aos quais o código deve ser aplicado como casos dentro do comutador. (Filme e página são exemplos).

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 );

O código foi testado no WP 3.0.1 e tem o efeito desejado de desativar os comentários para os tipos de postagem especificamente, deixando outros herdarem o padrão status da default_comment_statusopção.

Espero que ajude.... :)

t31os
fonte
2

Eu escrevi um plugin para desativar os comentários nas páginas por padrão. http://wordpress.org/extend/plugins/page-comments-off-please/

Talvez isso ajude?


fonte
1
parece excessivo, dada a solução de 5 linhas na resposta de sorich87! Cheers embora.
Fild suave
1
Na verdade, não há muitas abordagens para lidar com os requisitos de código, é apenas um método diferente.
t31os
1

De acordo com este segmento , o que você está solicitando não é possível sem o uso de um plug-in ou função personalizada para realizá-lo.

Travis Northcutt
fonte
1
Não tenho problema em escrever um, só preciso ser apontado na direção certa. Ganchos e filtros, etc., que podem ajudar.
Fuzz suave
1
Se você acabou de escrever um, compartilhe o que fez aqui! Parece um plugin que pode fazer isso seria muito útil.
Travis Northcutt
1

Eu recomendaria ainda usar suas condicionais na exibição de comentários, mas use as opções para armazenar suas configurações condicionais. Em seguida, você pode adicionar uma página ao menu Configurações que permita aos administradores ativar ou desativar os comentários, conforme necessário.


Atualizar

Ocorre-me que você deseja definir o padrão para comentar como "desativado" como uma configuração global em vez de defini-lo como "desativado" toda vez que você cria uma página. Isso é possível.

Vá para Configurações >> Discussão na seção de administração do WordPress. Na primeira seção ("Configurações padrão do artigo", você verá uma opção chamada "Permitir que as pessoas publiquem comentários em novos artigos" ... desmarque esta opção.

Agora, por padrão, os comentários serão desativados para todas as novas postagens, páginas e tipos de postagem personalizados. Você ainda pode ativar os comentários novamente "caso a caso", marcando a caixa de seleção apropriada na caixa de meta "Discussão" na tela de edição de postagem / página individual.

EAMann
fonte
1
Já existe uma opção lá, no entanto. Eu simplesmente quero isso por padrão.
Fild suave
1
Já existe uma opção onde? Você está se referindo à caixa "Discussão" na parte inferior da tela de edição de postagem / página?
EAMann
1
Sim, eu só quero que isso seja desmarcado. A solução Sorich87 quase funciona. Não em uma máquina para experimentar nada ainda.
Fild suave
-2

Se você simplesmente adicionar este código em functions.php

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

Vá para a postagem e, nas opções da tela, marque "Discussão" e "Comentários", você pode ativar / desativar os comentários para cada tipo de postagem personalizada.

kaizer1v
fonte
2
realmente não responder a (embora já respondidas) Pergunta
Mild Fuzz