Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Как отобразить по умолчанию форму для ввода комментариев (wordpress-сайт) на страницах записей произвольного типа?

#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"

Комментариев нет:

Отправить комментарий