Fase 1: Estructura Base y DI Container - Clean Architecture
COMPLETADO: Fase 1 de la migración a Clean Architecture + POO ## Estructura de Carpetas - ✓ Estructura completa de 4 capas (Domain, Application, Infrastructure, Presentation) - ✓ Carpetas de Use Cases (SaveComponent, GetComponent, DeleteComponent, SyncSchema) - ✓ Estructura de tests (Unit, Integration, E2E) - ✓ Carpetas de schemas y templates ## Composer y Autoloading - ✓ PSR-4 autoloading configurado para ROITheme namespace - ✓ Autoloader optimizado regenerado ## DI Container - ✓ DIContainer implementado con patrón Singleton - ✓ Métodos set(), get(), has() para gestión de servicios - ✓ Getters específicos para ComponentRepository, ValidationService, CacheService - ✓ Placeholders que serán implementados en Fase 5 - ✓ Prevención de clonación y deserialización ## Interfaces - ✓ ComponentRepositoryInterface (Domain) - ✓ ValidationServiceInterface (Application) - ✓ CacheServiceInterface (Application) - ✓ Component entity placeholder (Domain) ## Bootstrap - ✓ functions.php actualizado con carga de Composer autoloader - ✓ Inicialización del DIContainer - ✓ Helper function roi_container() disponible globalmente ## Tests - ✓ 10 tests unitarios para DIContainer (100% cobertura) - ✓ Total: 13 tests unitarios, 28 assertions - ✓ Suite de tests pasando correctamente ## Validación - ✓ Script de validación automatizado (48/48 checks pasados) - ✓ 100% de validaciones exitosas La arquitectura base está lista para la Fase 2. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
* - Rutas de búsqueda (ej. /search/ o /?s=query desde raíz) → 404
|
||||
* - URLs válidas con parámetro ?s= → entregar página normal, ignorar parámetro
|
||||
*
|
||||
* @package Apus_Theme
|
||||
* @package ROI_Theme
|
||||
* @since 1.0.0
|
||||
* @link https://github.com/prime-leads-app/analisisdepreciosunitarios.com/issues/3
|
||||
*/
|
||||
@@ -26,10 +26,10 @@ if (!defined('ABSPATH')) {
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function apus_disable_search_widget() {
|
||||
function roi_disable_search_widget() {
|
||||
unregister_widget('WP_Widget_Search');
|
||||
}
|
||||
add_action('widgets_init', 'apus_disable_search_widget');
|
||||
add_action('widgets_init', 'roi_disable_search_widget');
|
||||
|
||||
/**
|
||||
* Bloquear queries de búsqueda
|
||||
@@ -40,7 +40,7 @@ add_action('widgets_init', 'apus_disable_search_widget');
|
||||
* @since 1.0.0
|
||||
* @param WP_Query $query La instancia de WP_Query.
|
||||
*/
|
||||
function apus_disable_search_queries($query) {
|
||||
function roi_disable_search_queries($query) {
|
||||
// Solo procesar en el frontend y en la query principal
|
||||
if (is_admin() || !$query->is_main_query()) {
|
||||
return;
|
||||
@@ -66,7 +66,7 @@ function apus_disable_search_queries($query) {
|
||||
}
|
||||
}
|
||||
}
|
||||
add_action('pre_get_posts', 'apus_disable_search_queries', 10);
|
||||
add_action('pre_get_posts', 'roi_disable_search_queries', 10);
|
||||
|
||||
/**
|
||||
* Remover enlaces de búsqueda del frontend
|
||||
@@ -76,10 +76,10 @@ add_action('pre_get_posts', 'apus_disable_search_queries', 10);
|
||||
* @since 1.0.0
|
||||
* @return string Cadena vacía.
|
||||
*/
|
||||
function apus_disable_search_form() {
|
||||
function roi_disable_search_form() {
|
||||
return '';
|
||||
}
|
||||
add_filter('get_search_form', 'apus_disable_search_form');
|
||||
add_filter('get_search_form', 'roi_disable_search_form');
|
||||
|
||||
/**
|
||||
* Prevenir indexación de páginas de búsqueda
|
||||
@@ -88,12 +88,12 @@ add_filter('get_search_form', 'apus_disable_search_form');
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
function apus_noindex_search() {
|
||||
function roi_noindex_search() {
|
||||
if (is_search()) {
|
||||
echo '<meta name="robots" content="noindex,nofollow">' . "\n";
|
||||
}
|
||||
}
|
||||
add_action('wp_head', 'apus_noindex_search', 1);
|
||||
add_action('wp_head', 'roi_noindex_search', 1);
|
||||
|
||||
/**
|
||||
* Remover rewrite rules de búsqueda
|
||||
@@ -104,7 +104,7 @@ add_action('wp_head', 'apus_noindex_search', 1);
|
||||
* @param array $rules Reglas de reescritura de WordPress.
|
||||
* @return array Reglas modificadas sin búsqueda.
|
||||
*/
|
||||
function apus_remove_search_rewrite_rules($rules) {
|
||||
function roi_remove_search_rewrite_rules($rules) {
|
||||
foreach ($rules as $rule => $rewrite) {
|
||||
if (preg_match('/search/', $rule)) {
|
||||
unset($rules[$rule]);
|
||||
@@ -112,4 +112,4 @@ function apus_remove_search_rewrite_rules($rules) {
|
||||
}
|
||||
return $rules;
|
||||
}
|
||||
add_filter('rewrite_rules_array', 'apus_remove_search_rewrite_rules');
|
||||
add_filter('rewrite_rules_array', 'roi_remove_search_rewrite_rules');
|
||||
|
||||
Reference in New Issue
Block a user