отключение комментариев по умолчанию для страниц и пользовательских типов записей?
Я хочу отключить комментарии по умолчанию со страницами и пользовательскими типами сообщений
Первоначально я просто использовал условные обозначения в функции отображения комментариев, чтобы избежать отображения блока на этих страницах, но мне нужно, чтобы пользователь мог снова включать комментарии по мере необходимости.
6 answers
Насколько я понимаю, вы хотите, чтобы страницы и некоторые пользовательские типы сообщений по умолчанию комментировали "выключено", в то время как сообщения по-прежнему будут использовать опцию по умолчанию (т. Е. Комментировать "включено"). Если это так, то это сделает следующая функция.
function default_comments_off( $data ) {
if( $data['post_type'] == 'page' && $data['post_status'] == 'auto-draft' ) {
$data['comment_status'] = 0;
}
return $data;
}
add_filter( 'wp_insert_post_data', 'default_comments_off' );
Когда вы создаете новый пост (пользовательский тип или обычный), WordPress вызывает get_default_post_to_edit
, который затем устанавливает значения по умолчанию, которые будет иметь новый пост.
Эта функция предоставляет несколько фильтров для изменения заголовка по умолчанию, содержимого и выдержки, но, к сожалению, больше ничего... однако каждый фильтр передает полный объект $post
в обратный вызов, по сути, это означает, что можно переопределить несколько свойств (или только одно, если нам нравится)
Это должно сработать для вас, просто добавьте типы записей, к которым должен применяться код, в качестве обращений внутри коммутатора.. (фильм и страница являются примерами)..
function my_default_content( $post_content, $post ) {
if( $post->post_type )
switch( $post->post_type ) {
case 'page':
case 'movie':
$post->comment_status = 'closed';
break;
}
return $post_content;
}
add_filter( 'default_content', 'my_default_content', 10, 2 );
Код был протестирован на WP 3.0.1 и имеет желаемый эффект отключения комментариев специально для типов сообщений, оставляя другим возможность наследовать статус по умолчанию от опции default_comment_status
.
Надеюсь, это поможет.... :)
Я написал плагин для отключения комментариев на страницах по умолчанию. http://wordpress.org/extend/plugins/page-comments-off-please/
Возможно, это поможет?
Согласно этому потоку , то, что вы запрашиваете, невозможно без использования пользовательского плагина или функции для его выполнения.
Я бы рекомендовал по-прежнему использовать ваши условные обозначения в комментариях, но использовать параметры для сохранения ваших условных настроек. Затем вы можете добавить страницу в меню настроек, которая позволяет администраторам включать или отключать комментарии по мере необходимости.
Обновление
Мне пришло в голову, что вы хотите установить значение по умолчанию для комментариев "выключено" в качестве глобального параметра, а не устанавливать его в "выключено" каждый раз, когда вы создаете страницу. Это возможно.
Перейдите в Настройки >> Обсуждение в разделе администратора WordPress. В первом разделе ("Настройки статьи по умолчанию") вы увидите опцию "Разрешить людям оставлять комментарии к новым статьям"... снимите этот флажок.
Теперь по умолчанию комментарии будут отключены для всех новых сообщений, страниц и пользовательских типов сообщений. Вы все еще можете снова включать комментарии в каждом конкретном случае, установив соответствующий флажок в мета-поле "Обсуждение" на экране редактирования отдельного сообщения/страницы.
Если вы просто добавите этот код в functions.php
<?php
add_post_type_support( 'your_custom_post_type', array( 'comments' ) );
?>
Перейдите к сообщению, и в настройках экрана отметьте "Обсуждение" и "Комментарии", вы можете включить/отключить комментарии для каждого пользовательского типа сообщения.