ページおよびカスタム投稿タイプのデフォルトとしてコメントをオフに設定しますか?


20

ページとカスタム投稿タイプでコメントをデフォルトでオフにしたい

最初は、これらのページにブロックが表示されないようにコメント表示関数で条件を使用しましたが、ユーザーが必要に応じてコメントをオンに戻すことができるようにする必要があります。


1
ちょうど友好的なリマインダーは、私はこの質問への答えを追加しました。私は望ましい効果があると信じています。
t31osDec

1
あなたの機能はうまく機能していると確信していますが、私の目的に合った答えをすでに選択していました。
マイルドファズ

回答:


9

私が理解していることから、あなたはページといくつかのカスタム投稿タイプをデフォルトでコメントを「オフ」に設定したいが、投稿はまだデフォルトのオプションを使用する(すなわち、「オン」をコメントする)。この場合、次の関数が実行します。

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

1
コメントを再び有効にしたい場合、これは失敗します。一度だけ実行されるように編集する必要があります
マイルドファズ

1
現時点ではマシンではありませんが、メタデータメカニックを使用して、関数を実行しない場合はメタをチェックできます。そうでない場合は、メタを追加して関数を実行します。
マイルドファズ

1
テスト済みですが、投稿IDが関数の$ data変数に含まれていないため、これは単純に機能しません。
マイルドファズ

1
回答を送信する前に(WP 3.0で)テストし、機能しました。どのような問題が発生していますか?関数が実行される前に投稿がまだ作成されていないため、投稿IDは$ dataにありません(関数wp_insert_postのフィルターを見てください)。関数は、フィールドにコンテンツを入力する前にwp-admin / post-new.php?post-type = xxxにアクセスしたときにのみ実行されます。
sorich87

1
テストサーバーでは、コメントをオンに戻すことはできません。コメントは常にオフに設定されています。
マイルドファズ

10

新しい投稿(カスタムタイプまたはレギュラー)を作成すると、WordPressが呼び出します get_default_post_to_editて、新しい投稿のデフォルト値を設定します。

この関数は、デフォルトのタイトル、コンテンツ、および抜粋を変更するためのいくつかのフィルターフックを提供しますが、残念ながら他には何もありません...しかし、各フィルターは完全な$postオブジェクトをコールバックに渡します。私たちが好き)

これはあなたのために働くはずです、単にスイッチ内のケースとしてコードが適用されるべき投稿タイプを追加してください..(映画とページは例です)..

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

コードはWP 3.0.1でテストされており、投稿タイプのコメントを無効にし、他のユーザーにはデフォルトを継承させるという望ましい効果があります。default_comment_statusオプションはステータスをオプションからします。

それが役に立てば幸い.... :)


2

デフォルトでページのコメントを無効にするプラグインを作成しました。 http://wordpress.org/extend/plugins/page-comments-off-please/

おそらくそれが役立ちますか?


1
sorich87の答えの5行のソリューションを考えると、過剰に思えます!乾杯。
マイルドファズ

1
実際には、コード要件に取り組むための多くのアプローチがありますが、それは単なる別の方法です。
t31os

1

このスレッドによると、あなたが要求していることは、それを達成するためにカスタムプラグインまたは関数を使用しないと不可能です。


1
文章を書くのに問題はありません。正しい方向に向けるだけです。フックとフィルターなどが役立ちます。
マイルドファズ

1
あなたが1つを書くことになった場合、ここであなたがしたことを共有してください!それを行うことができるプラグインのように思えます多くの使用を取得します。
トラビスノースカット

1

コメント表示で条件を引き続き使用することをお勧めしますが、オプションを使用して条件設定を保存します。次に、管理者が必要に応じてコメントをオンまたはオフにできるページを[設定]メニューに追加できます。


更新

私は、ページを作成するたびに「オフ」に設定するのではなく、グローバル設定として「オフ」にコメントのデフォルトを設定したいことがあります。これ可能です。

WordPress管理セクションの[設定] >> [ディスカッション]に移動します。最初のセクション(「既定の記事の設定」)には、「ユーザーに新しい記事へのコメントの投稿を許可する」というオプションが表示されます...このオプションをオフにします。

これで、デフォルトで、コメントはすべての新しい投稿、ページ、およびカスタム投稿タイプに対して「オフ」になります。個々の投稿/ページ編集画面の[ディスカッション]メタボックスで適切なチェックボックスを選択することにより、ケースバイケースでコメントを「オン」に戻すことができます。


1
ただし、そこにはすでにオプションがあります。デフォルトでオフにしたいだけです。
マイルドファズ

1
すでにオプションはどこにありますか?投稿/ページ編集画面の下部にある「ディスカッション」ボックスを参照していますか?
EAMann

1
はい、チェックを外したいだけです。Sorich87ソリューションはほとんど機能します。まだ何かを試すマシンではありません。
マイルドファズ

-2

functions.phpにこのコードを単に追加する場合

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

投稿に移動し、画面オプションで「ディスカッション」と「コメント」にチェックマークを付けて、各カスタム投稿タイプのコメントを有効/無効にすることができます。


2
(既に答えられている)質問に本当に答えていません
マイルドファズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.