feat(theme): add [roi_post_grid] shortcode for static pages
- Create PostGridShortcodeRegistrar for WordPress shortcode registration - Implement RenderPostGridUseCase following Clean Architecture - Add PostGridQueryBuilder for custom WP_Query construction - Add PostGridShortcodeRenderer for HTML/CSS generation - Register shortcode in DIContainer with proper DI - Add shortcode usage guide in post-grid admin panel - Fix sidebar layout: add hide_for_logged_in check to wrapper visibility Shortcode attributes: category, tag, author, posts_per_page, columns, show_pagination, show_thumbnail, show_excerpt, show_meta, etc. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,12 @@ use ROITheme\Shared\Domain\Contracts\WrapperVisibilityCheckerInterface;
|
||||
use ROITheme\Shared\Infrastructure\Persistence\WordPress\WordPressComponentVisibilityRepository;
|
||||
use ROITheme\Shared\Application\UseCases\CheckWrapperVisibilityUseCase;
|
||||
use ROITheme\Shared\Infrastructure\Wordpress\BodyClassHooksRegistrar;
|
||||
// Post Grid Shortcode (Plan post-grid-shortcode)
|
||||
use ROITheme\Shared\Domain\Contracts\PostGridQueryBuilderInterface;
|
||||
use ROITheme\Shared\Domain\Contracts\PostGridShortcodeRendererInterface;
|
||||
use ROITheme\Shared\Infrastructure\Query\PostGridQueryBuilder;
|
||||
use ROITheme\Shared\Infrastructure\Ui\PostGridShortcodeRenderer;
|
||||
use ROITheme\Shared\Application\UseCases\RenderPostGrid\RenderPostGridUseCase;
|
||||
|
||||
/**
|
||||
* DIContainer - Contenedor de Inyección de Dependencias
|
||||
@@ -493,4 +499,47 @@ final class DIContainer
|
||||
}
|
||||
return $this->instances['bodyClassHooksRegistrar'];
|
||||
}
|
||||
|
||||
// ===============================
|
||||
// Post Grid Shortcode System
|
||||
// ===============================
|
||||
|
||||
/**
|
||||
* Obtiene el query builder para post grid shortcode
|
||||
*/
|
||||
public function getPostGridQueryBuilder(): PostGridQueryBuilderInterface
|
||||
{
|
||||
if (!isset($this->instances['postGridQueryBuilder'])) {
|
||||
$this->instances['postGridQueryBuilder'] = new PostGridQueryBuilder();
|
||||
}
|
||||
return $this->instances['postGridQueryBuilder'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene el renderer para post grid shortcode
|
||||
*/
|
||||
public function getPostGridShortcodeRenderer(): PostGridShortcodeRendererInterface
|
||||
{
|
||||
if (!isset($this->instances['postGridShortcodeRenderer'])) {
|
||||
$this->instances['postGridShortcodeRenderer'] = new PostGridShortcodeRenderer(
|
||||
$this->getCSSGeneratorService()
|
||||
);
|
||||
}
|
||||
return $this->instances['postGridShortcodeRenderer'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene el caso de uso para renderizar post grid shortcode
|
||||
*/
|
||||
public function getRenderPostGridUseCase(): RenderPostGridUseCase
|
||||
{
|
||||
if (!isset($this->instances['renderPostGridUseCase'])) {
|
||||
$this->instances['renderPostGridUseCase'] = new RenderPostGridUseCase(
|
||||
$this->getPostGridQueryBuilder(),
|
||||
$this->getPostGridShortcodeRenderer(),
|
||||
$this->getComponentSettingsRepository()
|
||||
);
|
||||
}
|
||||
return $this->instances['renderPostGridUseCase'];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user