#php #wordpress
На вордпресс-сайте зарегистрирован произвольный тип записей: movies Создан шаблон single-movies.php для отдельной страницы записи типа "movies" Регистрация произвольного типа записей "movies" осуществлена с помощью кода (в файле functions.php): add_action('init', 'my_custom_init'); function my_custom_init() { // Регистрация произвольного типа записей "movies" $labels = array( 'name' => 'Фильмы', // Основное название типа записи 'singular_name' => 'Фильм', // отдельное название записи типа movies 'add_new' => 'Добавить новый', 'add_new_item' => 'Добавить новый Фильм', 'edit_item' => 'Редактировать Фильм', 'new_item' => 'Новый Фильм', 'view_item' => 'Посмотреть Фильм', 'search_items' => 'Найти Фильм', 'not_found' => 'Фильмов не найдено', 'not_found_in_trash' => 'В корзине Фильмов не найдено', 'parent_item_colon' => '', 'menu_name' => 'Фильмы' ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'comments') ); register_post_type('movies', $args); // Регистрация произвольного типа записей "movies" // end } // Добавляем фильтр, который изменит сообщение при публикации при изменении типа записи movies add_filter('post_updated_messages', 'movies_updated_messages'); function movies_updated_messages($messages) { global $post, $post_ID; $messages['movies'] = array( 0 => '', // Не используется. Сообщения используются с индекса 1. 1 => sprintf('movies обновлено. Посмотреть запись movies', esc_url(get_permalink($post_ID))), 2 => 'Произвольное поле обновлено.', 3 => 'Произвольное поле удалено.', 4 => 'Запись movies обновлена.', /* %s: дата и время ревизии */ 5 => isset($_GET['revision']) ? sprintf('Запись movies восстановлена из ревизии %s', wp_post_revision_title((int) $_GET['revision'], false)) : false, 6 => sprintf('Запись movies опубликована. Перейти к записи movies', esc_url(get_permalink($post_ID))), 7 => 'Запись movies сохранена.', 8 => sprintf('Запись movies сохранена. Предпросмотр записи movies', esc_url(add_query_arg('preview', 'true', get_permalink($post_ID)))), 9 => sprintf('Запись movies запланирована на: %1$s. Предпросмотр записи movies', // Как форматировать даты в PHP можно посмотреть тут: php.net/date date_i18n(__('M j, Y @ G:i'), strtotime($post - > post_date)), esc_url(get_permalink($post_ID))), 10 => sprintf('Черновик записи movies обновлен. Предпросмотр записи movies', esc_url(add_query_arg('preview', 'true', get_permalink($post_ID)))), ); return $messages; } // показ раздела "помощь" для типа записей movies add_action('contextual_help', 'add_help_text', 10, 3); function add_help_text($contextual_help, $screen_id, $screen) { //$contextual_help .= var_dump($screen); // используйте чтобы помочь определить параметр $screen->id if ('movies' == $screen - > id) { $contextual_help = 'Напоминалка при редактировании записи movies: Указать нужную информацию. Если нужно запланировать публикацию на будущее: В блоке с кнопкой "опубликовать" нажмите редактировать дату. Измените дату на нужную, будущую и подтвердите изменения кнопкой ниже "ОК". '; } elseif('edit-movies' == $screen - > id) { $contextual_help = 'Это раздел помощи, показанный для типа записи movies'; } return $contextual_help; } Для того, чтобы отобразить форму для ввода комментариев на странице записи произвольного типа "movies", - в шаблоне single-movies.php добавляем стандартную функцию: В результате на отдельной странице записи типа "movies" вместо формы для ввода комментариев - отображается текст: Обсуждение закрыто. При этом в случае с записями стандартного типа - при использовании функции - корректно отображается форма для ввода комментариев. В админке во вкладке "Настройки обсуждения" - установлена галочка "Разрешить оставлять комментарии на новые статьи" Не установлена галочка "Автоматически закрывать обсуждение статей старше 14 дней" Не установлена галочка "Пользователи должны быть зарегистрированы и авторизованы для комментирования." В админке непосредственно на странице редактирования записи произвольного типа - отображается блок "Обсуждение". В нем есть два чекбокса: "Разрешить комментарии." ; "Разрешить обратные ссылки и уведомления." По умолчанию в чекбоксе "Разрешить комментарии." - галочка не поставлена. Если галочку поставить вручную - то тогда на странице записи произвольного типа "movies" форма для ввода комментариев отобразится корректно. Однако форма для ввода комментариев отобразится только на странице одной конкретной записи, для которой в админке вручную поставили галочку в чекбоксе "Разрешить комментарии.", а не на всех страницах записей произвольного типа "movies". Вопрос: как сделать, чтобы в чекбоксе "Разрешить комментарии." галочка была бы по умолчанию проставлена для всех записей произвольного типа "movies" ? (чтобы форма для ввода комментариев отображалась бы по умолчанию на страницах записей произвольного типа?
Ответы
Ответ 1
Вам нужно обновить комментирование для постов в админке вот так: In SETTINGS > DISCUSSION uncheck the "Allow people to post comments on new articles" setting. Click "Save Changes" Now go back and re-check "Allow people to post comments on new articles" Click "Save Changes"
Комментариев нет:
Отправить комментарий