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>
127 lines
2.8 KiB
PHP
127 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* The template for displaying all pages
|
|
*
|
|
* This is the template that displays all pages by default.
|
|
* Please note that this is the WordPress construct of pages and that
|
|
* other 'pages' on your WordPress site will use a different template.
|
|
*
|
|
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-page
|
|
*
|
|
* @package ROI_Theme
|
|
* @since 1.0.0
|
|
*/
|
|
|
|
get_header();
|
|
?>
|
|
|
|
<main id="main-content" class="site-main" role="main">
|
|
|
|
<div class="content-wrapper">
|
|
|
|
<!-- Primary Content Area -->
|
|
<div id="primary" class="content-area">
|
|
|
|
<?php
|
|
while ( have_posts() ) :
|
|
the_post();
|
|
?>
|
|
|
|
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
|
|
|
|
<!-- Featured Image -->
|
|
<?php if ( has_post_thumbnail() ) : ?>
|
|
<div class="post-thumbnail">
|
|
<?php
|
|
the_post_thumbnail(
|
|
'roi-featured-large',
|
|
array(
|
|
'alt' => the_title_attribute(
|
|
array(
|
|
'echo' => false,
|
|
)
|
|
),
|
|
'loading' => 'eager',
|
|
)
|
|
);
|
|
?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<!-- Page Header -->
|
|
<header class="entry-header">
|
|
<h1 class="entry-title">
|
|
<?php the_title(); ?>
|
|
</h1>
|
|
</header><!-- .entry-header -->
|
|
|
|
<!-- Page Content -->
|
|
<div class="entry-content">
|
|
<?php
|
|
the_content();
|
|
|
|
// Display page links for paginated pages
|
|
wp_link_pages(
|
|
array(
|
|
'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'roi-theme' ),
|
|
'after' => '</div>',
|
|
)
|
|
);
|
|
?>
|
|
</div><!-- .entry-content -->
|
|
|
|
<!-- Page Footer -->
|
|
<?php if ( get_edit_post_link() ) : ?>
|
|
<footer class="entry-footer">
|
|
<?php
|
|
// Edit post link for logged-in users with permission
|
|
edit_post_link(
|
|
sprintf(
|
|
wp_kses(
|
|
/* translators: %s: Page title. Only visible to screen readers. */
|
|
__( 'Edit<span class="screen-reader-text"> "%s"</span>', 'roi-theme' ),
|
|
array(
|
|
'span' => array(
|
|
'class' => array(),
|
|
),
|
|
)
|
|
),
|
|
get_the_title()
|
|
),
|
|
'<span class="edit-link">',
|
|
'</span>'
|
|
);
|
|
?>
|
|
</footer><!-- .entry-footer -->
|
|
<?php endif; ?>
|
|
|
|
</article><!-- #post-<?php the_ID(); ?> -->
|
|
|
|
<?php
|
|
// Display comments section if enabled
|
|
if ( comments_open() || get_comments_number() ) :
|
|
comments_template();
|
|
endif;
|
|
|
|
endwhile; // End of the loop.
|
|
?>
|
|
|
|
</div><!-- #primary -->
|
|
|
|
<?php
|
|
/**
|
|
* Sidebar
|
|
* Display the sidebar if it's active.
|
|
*/
|
|
if ( is_active_sidebar( 'sidebar-1' ) ) :
|
|
get_sidebar();
|
|
endif;
|
|
?>
|
|
|
|
</div><!-- .content-wrapper -->
|
|
|
|
</main><!-- #main-content -->
|
|
|
|
<?php
|
|
get_footer();
|