404, 'back_link' => true, ) ); } /** * Desactivar script de respuesta de comentarios * * Remueve el script comment-reply.js del frontend. * * @since 1.0.0 */ function roi_disable_comment_reply_script() { wp_deregister_script('comment-reply'); } add_action('wp_enqueue_scripts', 'roi_disable_comment_reply_script', 100); /** * Remover menú de comentarios del admin * * Oculta el menú "Comentarios" del área de administración. * * @since 1.0.0 */ function roi_remove_comments_admin_menu() { remove_menu_page('edit-comments.php'); } add_action('admin_menu', 'roi_remove_comments_admin_menu'); /** * Remover comentarios de la admin bar * * Oculta el icono de comentarios de la barra de administración. * * @since 1.0.0 * @param WP_Admin_Bar $wp_admin_bar Instancia de WP_Admin_Bar. */ function roi_remove_comments_admin_bar($wp_admin_bar) { $wp_admin_bar->remove_menu('comments'); } add_action('admin_bar_menu', 'roi_remove_comments_admin_bar', 60); /** * Remover metabox de comentarios del editor * * Oculta el metabox de comentarios en el editor de posts y páginas. * * @since 1.0.0 */ function roi_remove_comments_metabox() { // Post types por defecto remove_meta_box('commentstatusdiv', 'post', 'normal'); remove_meta_box('commentstatusdiv', 'page', 'normal'); remove_meta_box('commentsdiv', 'post', 'normal'); remove_meta_box('commentsdiv', 'page', 'normal'); remove_meta_box('trackbacksdiv', 'post', 'normal'); remove_meta_box('trackbacksdiv', 'page', 'normal'); // Aplicar a cualquier custom post type que pueda existir $post_types = get_post_types(array('public' => true), 'names'); foreach ($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'); } } } add_action('admin_init', 'roi_remove_comments_metabox'); /** * Ocultar columna de comentarios en listados del admin * * Remueve la columna de comentarios de los listados de posts/páginas. * * @since 1.0.0 * @param array $columns Columnas actuales. * @return array Columnas modificadas sin comentarios. */ function roi_remove_comments_column($columns) { unset($columns['comments']); return $columns; } // Aplicar a posts y páginas add_filter('manage_posts_columns', 'roi_remove_comments_column'); add_filter('manage_pages_columns', 'roi_remove_comments_column'); /** * Desactivar widgets de comentarios * * Remueve los widgets relacionados con comentarios. * * @since 1.0.0 */ function roi_disable_comments_widgets() { unregister_widget('WP_Widget_Recent_Comments'); } add_action('widgets_init', 'roi_disable_comments_widgets'); /** * Remover estilos CSS de comentarios recientes * * Remueve los estilos inline del widget de comentarios recientes. * * @since 1.0.0 */ function roi_remove_recent_comments_style() { global $wp_widget_factory; if (isset($wp_widget_factory->widgets['WP_Widget_Recent_Comments'])) { remove_action('wp_head', array( $wp_widget_factory->widgets['WP_Widget_Recent_Comments'], 'recent_comments_style' )); } } add_action('widgets_init', 'roi_remove_recent_comments_style'); /** * Redireccionar URLs de comentarios (opcional) * * Si alguien intenta acceder directamente a URLs de comentarios, * redirigir al post padre. * * @since 1.0.0 */ function roi_redirect_comment_urls() { if (is_comment_feed()) { wp_safe_redirect(home_url(), 301); exit; } } add_action('template_redirect', 'roi_redirect_comment_urls'); /** * Prevenir nuevos comentarios via REST API * * Desactiva endpoints de comentarios en REST API. * * @since 1.0.0 * @param array $endpoints Endpoints disponibles. * @return array Endpoints sin comentarios. */ function roi_disable_comments_rest_api($endpoints) { if (isset($endpoints['/wp/v2/comments'])) { unset($endpoints['/wp/v2/comments']); } if (isset($endpoints['/wp/v2/comments/(?P[\d]+)'])) { unset($endpoints['/wp/v2/comments/(?P[\d]+)']); } return $endpoints; } add_filter('rest_endpoints', 'roi_disable_comments_rest_api'); /** * Ocultar opciones de comentarios en el dashboard * * Remueve metaboxes de comentarios del dashboard. * * @since 1.0.0 */ function roi_remove_dashboard_comments() { remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal'); } add_action('admin_init', 'roi_remove_dashboard_comments'); /** * Desactivar notificaciones de comentarios * * Previene el envío de emails de notificación de comentarios. * * @since 1.0.0 * @return bool Siempre retorna false. */ function roi_disable_comment_emails() { return false; } add_filter('notify_post_author', 'roi_disable_comment_emails', 10, 2); add_filter('notify_moderator', 'roi_disable_comment_emails', 10, 2);