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>
254 lines
6.8 KiB
PHP
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);
|