Почему комментарии по умолчанию отключены в моих custom_post_types?

10 янв. 2012 г., 02:27:34
Просмотры: 49.1K
Голосов: 10

Я использую пользовательский тип записи (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' // Это регистрирует метабокс, который мы добавим позже.
        )
    );
}
0
Все ответы на вопрос 4
0
15

Хорошо - я решил эту проблему. Вот в чем, похоже, дело.

Комментарии по умолчанию отключены для пользовательских типов записей (custom post types). Это происходит даже если у вас они включены в общих настройках.

Чтобы исправить это, все что мне нужно было сделать:

  1. В НАСТРОЙКИ > ОБСУЖДЕНИЕ снимите галочку с пункта "Разрешить оставлять комментарии к новым статьям".
  2. Нажмите "Сохранить изменения"
  3. Теперь вернитесь и снова поставьте галочку "Разрешить оставлять комментарии к новым статьям"
  4. Нажмите "Сохранить изменения"

Похоже, что для пользовательских типов записей нужно как бы "перезапустить" эту настройку. Все новые записи созданных пользовательских типов записей теперь будут иметь включенное поле комментариев по умолчанию. Существующие записи сохранят свои предыдущие настройки. Предполагаю, что то же самое относится и к разрешению трекбэков. Надеюсь, это кому-то поможет...

11 янв. 2012 г. 00:20:35
6
14

Это состояние по умолчанию... вам нужно изменить строку "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' );
10 янв. 2012 г. 02:53:47
Комментарии

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

timshutes timshutes
10 янв. 2012 г. 17:03:20

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

Sagive Sagive
10 янв. 2012 г. 17:37:20

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

timshutes timshutes
10 янв. 2012 г. 23:42:10

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

timshutes timshutes
10 янв. 2012 г. 23:46:24

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

Sagive Sagive
11 янв. 2012 г. 01:00:42

Мне пришлось изменить на $data['comment_status'] = 'open'; чтобы это заработало.

Dipak Kumar Pusti Dipak Kumar Pusti
17 дек. 2019 г. 18:29:40
Показать остальные 1 комментариев
1

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

Это действительно лучший ответ. Особенно в моем случае, когда я фактически удаляю метабокс панели обсуждений. Сработало просто отлично, спасибо.

dylzee dylzee
3 июн. 2022 г. 10:45:28
1

Просто предположение, но нужно ли добавлять "comments" в массив supports параметра при вызове register_post_type()?

10 янв. 2012 г. 02:36:06
Комментарии

уже есть - я вижу панель обсуждения И могу использовать ее для включения комментариев к каждому посту, но она по умолчанию отключена, несмотря на то, что в настройках всего сайта комментарии включены.

timshutes timshutes
10 янв. 2012 г. 23:47:57