Files
roi-theme/Inc/comments-disable.php
FrankZamora 33d17f4b56 fix(structure): Rename assets and inc folders for Linux compatibility
- assets → Assets
- inc → Inc

Completes the case-sensitivity fixes for Linux servers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 22:55:31 -06:00

254 lines
6.8 KiB
PHP

<?php
/**
* Desactivar completamente el sistema de comentarios
*
* Este archivo desactiva completamente los comentarios en WordPress,
* tanto en el frontend como en el área de administración.
*
* @package ROI_Theme
* @since 1.0.0
* @link https://github.com/prime-leads-app/analisisdepreciosunitarios.com/issues/4
*/
// Exit if accessed directly
if (!defined('ABSPATH')) {
exit;
}
/**
* Desactivar soporte de comentarios y pingbacks
*
* Cierra comentarios y pingbacks para todos los post types.
*
* @since 1.0.0
* @param bool $open Si los comentarios están abiertos o no.
* @return bool Siempre retorna false.
*/
function roi_disable_comments_status() {
return false;
}
add_filter('comments_open', 'roi_disable_comments_status', 20, 2);
add_filter('pings_open', 'roi_disable_comments_status', 20, 2);
/**
* Ocultar comentarios existentes
*
* Retorna un array vacío para ocultar cualquier comentario existente.
*
* @since 1.0.0
* @param array $comments Array de comentarios.
* @return array Array vacío.
*/
function roi_hide_existing_comments($comments) {
return array();
}
add_filter('comments_array', 'roi_hide_existing_comments', 10, 2);
/**
* Desactivar feeds de comentarios
*
* Remueve los enlaces de feeds de comentarios del head.
*
* @since 1.0.0
*/
function roi_disable_comment_feeds() {
// Remover enlaces de feeds de comentarios
remove_action('wp_head', 'feed_links_extra', 3);
// Desactivar feeds de comentarios
add_action('do_feed_rss2_comments', 'roi_disable_feed_comments');
add_action('do_feed_atom_comments', 'roi_disable_feed_comments');
}
add_action('init', 'roi_disable_comment_feeds');
/**
* Retornar error en feeds de comentarios
*
* @since 1.0.0
*/
function roi_disable_feed_comments() {
wp_die(
esc_html__('Los comentarios están desactivados en este sitio.', 'roi-theme'),
esc_html__('Comentarios no disponibles', 'roi-theme'),
array(
'response' => 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<id>[\d]+)'])) {
unset($endpoints['/wp/v2/comments/(?P<id>[\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);