web-dev-qa-db-ja.com

Custom_post_typesでコメントがデフォルトで無効になっているのはなぜですか?

クライアント用のPodcastソリューションでカスタム投稿タイプ+分類法を使用しています。コメントの設定(設定>>ディスカッション)は「コメントを許可する」に設定されています。 [投稿]タブで投稿を追加/編集すると、コメントはデフォルトで有効になります。

ただし、カスタム投稿タイプ(Podcast)で投稿を追加/編集すると、コメントはデフォルトで無効になります。

ユーザーは各投稿のコメントを手動で有効にすることができますが、これは明らかに理想的ではありません。考えですか?

更新:functions.phpの関連コード

function create_my_post_types() {
    register_post_type( 'podcast',
        array(
            'labels' => array(
                'name' => __( 'Podcast' ),
                'singular_name' => __( 'Podcast' ),
                'new_item' => __( 'New Episode' ),
                'add_new_item' => __( 'Add New Episode' )
            ),
            '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' // This registers the metabox that we'll add later.
        )
    );
}
6
timshutes

わかりました - それで私はこれを解決しました。これが問題のようです。

カスタム投稿タイプでは、コメントはデフォルトで無効になっています。これは起こります あなたがそれらを全体的な設定で可能にしたとしても

それを修正するために、私がしなければならなかったのは以下のことだけでした:

  1. [設定]> [ディスカッション]で、[新しい記事にコメントを投稿できるようにする]設定をオフにします。
  2. [変更を保存]をクリックします
  3. さて、「新しい記事にコメントを投稿することを人々に許可する」に戻ってもう一度チェックしてください
  4. [変更を保存]をクリックします

カスタム投稿タイプの場合、この設定をちょっとキックスタートする必要があるようです。作成したcustom-post-typesの新しい投稿はすべて、デフォルトでボックスが有効になります。既存の投稿は以前の設定を保持します。トラックバックを許可しても同じだと思います。うまくいけば、これは誰かに役立ちます...

11
timshutes

これがデフォルトの状態です。カスタム投稿タイプを作成する場所の "Supports"行を変更する必要があります。

この行の意味:

//または同じように始まる何か類似のもの

'supports' => array('title','editor','author','excerpt','revisions'),

この行へ:

'supports' => array('title','editor','author','excerpt','comments','revisions'),

お役に立てれば。
歓声、サジベ。

追加された機能(内部機能ファイル):

function default_comments_on( $data ) {
    if( $data['post_type'] == 'your_custom_post_name' ) {
        $data['comment_status'] = 1;
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_on' );
7
Sagive SEO

以下の提案のどれも私のために働きませんでした。 Sagive SEOの機能はほとんど私のために働きました。私はデータベースを調べて、comment_statusの唯一の値がopenとclosedであることを見つけました。その関数は値として1を挿入しました。私は機能を修正しました、そしてそれは今完璧に働くようです。これが誰かに役立つことを願っています。

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

ただランダムにスタブを取っていますが、register_post_type()呼び出しでsupports配列パラメータに "comments"を追加する必要がありますか?

1
Jason Rhodes