Для многих сайтов комментарии не нужны, и обычно даже без выведенной формы комментирования начинает сыпаться СПАМ. Отключим комментарии глобально.
Сделать это можно в настройках админки (Обсуждение) (делать это нужно изначально, но это не защищает от комментариев вложения) с помощью плагина Disable Comments (1 млн. скачиваний), либо набором функций:
add_action('admin_init', function () {
// Redirect any user trying to access comments page
global $pagenow;
if ($pagenow === 'edit-comments.php') {
wp_redirect(admin_url());
exit;
}
// Remove comments metabox from dashboard
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
// Disable support for comments and trackbacks in post types
foreach (get_post_types() as $post_type) {
if (post_type_supports($post_type, 'comments')) {
remove_post_type_support($post_type, 'comments');
remove_post_type_support($post_type, 'trackbacks');
}
}
});
// Close comments on the front-end
add_filter('comments_open', '__return_false', 20, 2);
add_filter('pings_open', '__return_false', 20, 2);
// Hide existing comments
add_filter('comments_array', '__return_empty_array', 10, 2);
// Remove comments page in menu
add_action('admin_menu', function () {
remove_menu_page('edit-comments.php');
});
// Remove comments links from admin bar
add_action('init', function () {
if (is_admin_bar_showing()) {
remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);
}
});
Массовое включение/отключение комментариев через БД
UPDATE wp_posts SET comment_status = 'open' WHERE post_type = 'post';
UPDATE wp_posts SET comment_status = 'open' WHERE post_type = 'product';
Массовое отключение всех комментариев (для всех типов)
UPDATE wp_posts SET comment_status = 'closed';
Если для определенного типа, то добавляем условие:
UPDATE wp_posts SET comment_status = 'closed' WHERE post_type = 'post';
UPDATE wp_posts SET comment_status = 'closed' WHERE post_type = 'product';
[site-socialshare]