Почему комментарии по умолчанию отключены в моих custom_post_types?
Я использую пользовательский тип записи (custom post type) + таксономии в решении для подкаста клиента. Настройка (настройки >> обсуждение) для комментариев установлена на "разрешить комментарии". Когда я добавляю/редактирую записи во вкладке "записи", комментарии включены по умолчанию.
Однако, когда я добавляю/редактирую записи в пользовательском типе записи (podcast) - комментарии отключены по умолчанию.
Пользователь все еще может вручную включить комментарии для каждой записи, но это, очевидно, не идеальное решение. Какие есть мысли?
ОБНОВЛЕНИЕ: Соответствующий код в functions.php
function create_my_post_types() {
register_post_type( 'podcast',
array(
'labels' => array(
'name' => __( 'Podcast' ),
'singular_name' => __( 'Podcast' ),
'new_item' => __( 'Новый эпизод' ),
'add_new_item' => __( 'Добавить новый эпизод' )
),
'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' // Это регистрирует метабокс, который мы добавим позже.
)
);
}

Хорошо - я решил эту проблему. Вот в чем, похоже, дело.
Комментарии по умолчанию отключены для пользовательских типов записей (custom post types). Это происходит даже если у вас они включены в общих настройках.
Чтобы исправить это, все что мне нужно было сделать:
- В НАСТРОЙКИ > ОБСУЖДЕНИЕ снимите галочку с пункта "Разрешить оставлять комментарии к новым статьям".
- Нажмите "Сохранить изменения"
- Теперь вернитесь и снова поставьте галочку "Разрешить оставлять комментарии к новым статьям"
- Нажмите "Сохранить изменения"
Похоже, что для пользовательских типов записей нужно как бы "перезапустить" эту настройку. Все новые записи созданных пользовательских типов записей теперь будут иметь включенное поле комментариев по умолчанию. Существующие записи сохранят свои предыдущие настройки. Предполагаю, что то же самое относится и к разрешению трекбэков. Надеюсь, это кому-то поможет...

Это состояние по умолчанию... вам нужно изменить строку "Supports" при создании вашего пользовательского типа записи..
Имеется в виду эта строка:
// или что-то подобное, что начинается так же
'supports' => array('title','editor','author','excerpt','revisions'),
Замените на эту строку:
'supports' => array('title','editor','author','excerpt','comments','revisions'),
Надеюсь, это поможет.
С уважением, Sagive.
ДОБАВЛЕННАЯ ФУНКЦИЯ (В ФАЙЛ ФУНКЦИЙ):
function default_comments_on( $data ) {
if( $data['post_type'] == 'ваше_название_пользовательского_типа_записи' ) {
$data['comment_status'] = 1;
}
return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_on' );

Привет - у меня этот код уже правильно вставлен в functions.php. Насколько я понимаю, поле для комментариев вообще не появилось бы, если бы оно не было включено так, как ты описал. Моя проблема в том, что оно появляется, но по умолчанию не отмечено, хотя я установил значение по умолчанию как "включено" в Настройки > Обсуждение.

Оо.. похоже, что только ты видишь эту опцию таким образом... это твои предпочтения.. убедись, что ты отметил оба варианта (или нужный тебе) в модуле Обсуждение (смотри изображение: http://en.support.files.wordpress.com/2009/12/wpcom-discussion-module-off.png) и всё должно заработать.. Больше информации об этих настройках можно найти здесь: http://en.support.wordpress.com/enable-disable-comments/

Кажется, я не был достаточно ясен... эти пункты уже отмечены, и в результате комментарии включены для всех моих записей, КРОМЕ пользовательских типов записей, которые всё равно приходится редактировать вручную. Похоже на баг, или что-то, что мне нужно добавить в functions.php, но я не могу найти ничего в кодексе.

Подождите - в тот раз я неправильно понял - вы говорите о модуле в окне редактирования записи. Я определенно могу включить комментарии или обратные ссылки, поставив галочки в этих полях. ОДНАКО, я хотел бы, чтобы эти галочки стояли по умолчанию, чтобы моему клиенту не приходилось помнить о необходимости делать это КАЖДЫЙ раз при публикации нового эпизода подкаста. Я думал, что включение комментариев в разделе Обсуждение >> Настройки админки решит проблему, но галочка все равно не стоит по умолчанию.

Я все еще считаю, что если это поле (комментарии/обратные ссылки) появляется и вы сохраняете запись с ними, это должно стать состоянием по умолчанию... НО я добавил немного кода в свой оригинальный ответ - проверил на версии 3.01, на которой я работаю.. надеюсь, поможет.

Ни одно из следующих предложений мне не помогло. Функция 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' );
