отключение комментариев по умолчанию для страниц и пользовательских типов записей?


Я хочу отключить комментарии по умолчанию со страницами и пользовательскими типами сообщений

Первоначально я просто использовал условные обозначения в функции отображения комментариев, чтобы избежать отображения блока на этих страницах, но мне нужно, чтобы пользователь мог снова включать комментарии по мере необходимости.

 21
Author: Mild Fuzz, 2010-09-21

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' );
 9
Author: sorich87, 2010-09-22 06:38:26

Когда вы создаете новый пост (пользовательский тип или обычный), 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.

Надеюсь, это поможет.... :)

 10
Author: t31os, 2011-12-22 14:25:19

Я написал плагин для отключения комментариев на страницах по умолчанию. http://wordpress.org/extend/plugins/page-comments-off-please/

Возможно, это поможет?

 2
Author: , 2010-09-24 18:53:09

Согласно этому потоку , то, что вы запрашиваете, невозможно без использования пользовательского плагина или функции для его выполнения.

 1
Author: Travis Northcutt, 2010-09-21 14:16:51

Я бы рекомендовал по-прежнему использовать ваши условные обозначения в комментариях, но использовать параметры для сохранения ваших условных настроек. Затем вы можете добавить страницу в меню настроек, которая позволяет администраторам включать или отключать комментарии по мере необходимости.


Обновление

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

Перейдите в Настройки >> Обсуждение в разделе администратора WordPress. В первом разделе ("Настройки статьи по умолчанию") вы увидите опцию "Разрешить людям оставлять комментарии к новым статьям"... снимите этот флажок.

Теперь по умолчанию комментарии будут отключены для всех новых сообщений, страниц и пользовательских типов сообщений. Вы все еще можете снова включать комментарии в каждом конкретном случае, установив соответствующий флажок в мета-поле "Обсуждение" на экране редактирования отдельного сообщения/страницы.

 1
Author: EAMann, 2020-06-15 08:21:38

Если вы просто добавите этот код в functions.php

<?php
add_post_type_support( 'your_custom_post_type', array( 'comments' ) );
?>

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

 -2
Author: kaizer1v, 2011-11-05 08:23:47