Вопрос или проблема
Я хочу включить комментарии для пользовательских типов записей так же, как они включены для стандартных записей, но не могу добиться этого.
В файле functions.php, как часть регистрации моего пользовательского типа записи, у меня есть следующее:
'supports' => array('title', 'author', 'thumbnail', 'comments', 'revisions'),
В моем шаблоне для единичного типа записи у меня есть следующее:
<?php comments_template( '', true ); ?>
Но на экране редактирования “разрешить комментарии” не отмечено по умолчанию, что приводит к сообщению “комментарии закрыты” на фронтенде. Когда я отмечаю “разрешить комментарии”, комментарии включаются на фронтенде, но я действительно не хочу говорить своему клиенту, что он должен вручную отмечать этот флажок для каждой новой записи.
Я попробовал рекомендации здесь:
Почему комментарии отключены по умолчанию для моих пользовательских типов записей?
Но это не сработало для меня.
Я попробовал отключить все плагины. Не помогло.
Использую WP 3.6.
Есть какие-либо предложения? Спасибо заранее.
Я не вносил никаких дополнительных изменений, но как-то это сейчас работает правильно. Возможно, системе нужно было немного времени, но когда я проверил снова сегодня утром, все работало должным образом.
Я верю, что эти инструкции действительно работают:
Почему комментарии отключены по умолчанию для моих пользовательских типов записей?
По сути, включение комментариев в SETTINGS > DISCUSSION
, так же как нажатие “сохранить изменения” в SETTINGS > PERMALINKS
сбрасывает систему, если вы сталкиваетесь с 404 ошибкой после регистрации пользовательских типов записей.
Проверьте ваши настройки в обсуждении
1) Панель управления -> Настройки -> Обсуждение -> Настройки по умолчанию для статей ->
‘Разрешить людям оставлять комментарии к новым статьям’ должно быть отмечено.
Установив это, вы получите ‘Разрешить комментарии’ по умолчанию выбрано.
Пожалуйста, попробуйте изменить ваш код регистрации пользовательского типа записи, чтобы по умолчанию разрешить комментарии.
Установив 'comments' => true
в массиве аргументов, комментарии будут включены по умолчанию для вашего пользовательского типа записи.
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'your-post-type' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
'comments' => true, // Включить комментарии по умолчанию
);
register_post_type( 'your_post_type', $args );
Ответ или решение
Проблема, с которой вы столкнулись, касается включения комментариев по умолчанию для кастомных типов записей в WordPress. Давайте рассмотрим основные моменты, чтобы вы могли обеспечить правильное функционирование этой функции.
1. Настройка кастомного типа записи
При регистрации кастомного типа записи, необходимо убедиться, что комментарии действительно включены в массив опций ‘supports’. Вы уже сделали это с помощью следующей строки:
'supports' => array('title', 'author', 'thumbnail', 'comments', 'revisions'),
Это правильно, но также важно проверить другие параметры, которые могут повлиять на доступность комментариев.
2. Проверьте параметры обсуждения в админке
В админ-панели WordPress переходите в Настройки -> Обсуждение. Убедитесь, что опция "Разрешить людям оставлять комментарии на новых записях" активирована. Это важный шаг, так как именно эта настройка контролирует, будут ли комментарии включены по умолчанию для вновь созданных записей.
3. Использование аргументов при регистрации
Некоторые разработчики рекомендуют добавить следующий параметр в массив аргументов при регистрации кастомного типа записи:
'comments' => true
Такой подход может помочь установить комментарии как активные при создании записей. Однако важно заметить, что параметр ‘comments’ не является стандартным и его добавление не гарантирует желаемого результата. Наиболее надежным способом будет корректное использование ‘supports’.
4. Программное включение комментариев
Если вы хотите автоматически включать комментарии для каждого нового поста, вы можете использовать хук save_post
. Добавьте код в файл functions.php
вашей темы:
add_action('save_post', 'enable_comments_by_default');
function enable_comments_by_default($post_id) {
if (get_post_type($post_id) === 'your_post_type') {
// Разрешаем комментарии
$args = array(
'allow_comments' => true,
);
update_post_meta($post_id, '_enable_comments', $args);
}
}
5. Актуализация и кэш
Вы упомянули, что после некоторого времени всё заработало. Это может быть связано с кэшированием внутри системы WordPress. После внесения изменений рекомендуется очищать кэш (если используется) или просто попросить система «перезагрузиться» через изменение других настроек, например, заново сохранить настройки постоянных ссылок.
Заключение
Теперь вы знаете, что для включения комментариев по умолчанию для ваших кастомных типов записей важно обратить внимание на настройки как в функции регистрации типа записи, так и в админке WordPress. Следуя данным рекомендациям, вы можете обеспечить стабильное и надежное функционирование комментариев для кастомных записей, что значительно упростит работу вашего клиента.
Если возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой. Удачи вам в вашем проекте!