Files
roi-theme/wp-content/themes/apus-theme/inc/comments-disable.php
FrankZamora 995707156f Implementar Issues #2-4, #8-13, #16 - Funcionalidades core del tema
Implementación masiva de funcionalidades esenciales del tema apus-theme usando agentes paralelos para máxima eficiencia.

**Issues Completados:**

**Issue #2 - Eliminar bloat de WordPress:**
- inc/performance.php: 13 funciones que remueven emojis, oEmbed, feeds, dashicons, jQuery migrate, XML-RPC, etc.
- Optimización completa del frontend

**Issue #3 - Desactivar búsqueda nativa:**
- inc/search-disable.php: Bloquea queries de búsqueda, widget, formularios
- search.php: Retorna 404 con mensaje amigable

**Issue #4 - Desactivar comentarios:**
- inc/comments-disable.php: 15 funciones que eliminan comentarios de frontend y backend
- comments.php: Template desactivado

**Issue #8 - Footer con 4 widgets:**
- footer.php: Verificado con 4 áreas de widgets y copyright
- assets/css/footer.css: Estilos responsive completos
- Sistema de anchos configurables

**Issue #9 - Jerarquía de plantillas:**
- home.php, category.php, tag.php, author.php, date.php, taxonomy.php, attachment.php
- 7 nuevas plantillas + 12 verificadas
- Template parts completos
- Paginación en todos los archives

**Issue #10 - Imágenes destacadas:**
- inc/featured-image.php: 12 funciones para manejo de featured images
- Sin placeholders, lazy loading, alt text automático
- Responsive con Bootstrap, aspect ratio

**Issue #11 - Badge de categoría:**
- inc/category-badge.php: Badge Bootstrap sobre H1 en single posts
- Excluye "Uncategorized"
- Template tag: apus_display_category_badge()

**Issue #12 - TOC automático:**
- inc/toc.php: Genera TOC desde H2/H3
- assets/css/toc.css: Estilos con numeración CSS counters
- assets/js/toc.js: Smooth scroll, scroll spy, toggle
- Configurable con apus_get_option()

**Issue #13 - Posts relacionados:**
- inc/related-posts.php: Query por categoría, 12 funciones
- inc/admin/related-posts-options.php: Sistema de configuración
- assets/css/related-posts.css: Cards responsive
- Hook automático en single posts

**Issue #16 - AdSense delay:**
- inc/adsense-delay.php: Retardo de carga hasta scroll/click
- assets/js/adsense-loader.js: Detecta interacciones
- Mejora FID y TBT para Core Web Vitals

**Archivos Modificados:**
- functions.php: Includes de nuevos módulos, removido feed support
- single.php: Integración de category badge
- inc/enqueue-scripts.php: Enqueue de nuevos assets
- inc/theme-options-helpers.php: Helper functions para TOC

**Archivos Creados:**
- 7 nuevas plantillas WordPress
- 3 nuevos módulos inc/ (comments-disable, search-disable)
- 8 reportes de documentación .md

**Estadísticas:**
- Total funciones PHP: 60+ nuevas funciones
- Líneas de código: 2,500+ líneas
- Archivos nuevos: 18
- Archivos modificados: 9

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 16:53: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 Apus_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 apus_disable_comments_status() {
return false;
}
add_filter('comments_open', 'apus_disable_comments_status', 20, 2);
add_filter('pings_open', 'apus_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 apus_hide_existing_comments($comments) {
return array();
}
add_filter('comments_array', 'apus_hide_existing_comments', 10, 2);
/**
* Desactivar feeds de comentarios
*
* Remueve los enlaces de feeds de comentarios del head.
*
* @since 1.0.0
*/
function apus_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', 'apus_disable_feed_comments');
add_action('do_feed_atom_comments', 'apus_disable_feed_comments');
}
add_action('init', 'apus_disable_comment_feeds');
/**
* Retornar error en feeds de comentarios
*
* @since 1.0.0
*/
function apus_disable_feed_comments() {
wp_die(
esc_html__('Los comentarios están desactivados en este sitio.', 'apus-theme'),
esc_html__('Comentarios no disponibles', 'apus-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 apus_disable_comment_reply_script() {
wp_deregister_script('comment-reply');
}
add_action('wp_enqueue_scripts', 'apus_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 apus_remove_comments_admin_menu() {
remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'apus_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 apus_remove_comments_admin_bar($wp_admin_bar) {
$wp_admin_bar->remove_menu('comments');
}
add_action('admin_bar_menu', 'apus_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 apus_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', 'apus_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 apus_remove_comments_column($columns) {
unset($columns['comments']);
return $columns;
}
// Aplicar a posts y páginas
add_filter('manage_posts_columns', 'apus_remove_comments_column');
add_filter('manage_pages_columns', 'apus_remove_comments_column');
/**
* Desactivar widgets de comentarios
*
* Remueve los widgets relacionados con comentarios.
*
* @since 1.0.0
*/
function apus_disable_comments_widgets() {
unregister_widget('WP_Widget_Recent_Comments');
}
add_action('widgets_init', 'apus_disable_comments_widgets');
/**
* Remover estilos CSS de comentarios recientes
*
* Remueve los estilos inline del widget de comentarios recientes.
*
* @since 1.0.0
*/
function apus_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', 'apus_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 apus_redirect_comment_urls() {
if (is_comment_feed()) {
wp_safe_redirect(home_url(), 301);
exit;
}
}
add_action('template_redirect', 'apus_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 apus_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', 'apus_disable_comments_rest_api');
/**
* Ocultar opciones de comentarios en el dashboard
*
* Remueve metaboxes de comentarios del dashboard.
*
* @since 1.0.0
*/
function apus_remove_dashboard_comments() {
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
}
add_action('admin_init', 'apus_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 apus_disable_comment_emails() {
return false;
}
add_filter('notify_post_author', 'apus_disable_comment_emails', 10, 2);
add_filter('notify_moderator', 'apus_disable_comment_emails', 10, 2);