*/ public static function all(): array { return [ 'search' => GeneralRenderer::class, 'posts_toc' => GeneralRenderer::class, 'quote' => GeneralRenderer::class, 'icon_cards' => GeneralRenderer::class, 'video' => GeneralRenderer::class, 'embed' => GeneralRenderer::class, 'media_cards' => GeneralRenderer::class, 'icon_cover_cards' => GeneralRenderer::class, 'partners' => GeneralRenderer::class, 'combo_info' => GeneralRenderer::class, 'text_title' => GeneralRenderer::class, 'buttons' => GeneralRenderer::class, 'layout_gap' => GeneralRenderer::class, 'tag_cloud' => GeneralRenderer::class, 'recent_comments' => GeneralRenderer::class, 'links' => GeneralRenderer::class, 'notice' => GeneralRenderer::class, 'term_cards' => ContentRenderer::class, 'term_aggregation' => ContentRenderer::class, 'hot_posts' => ContentRenderer::class, 'post_pay' => ContentRenderer::class, 'posts' => ContentRenderer::class, 'tab_posts' => ContentRenderer::class, 'oneline_posts' => ContentRenderer::class, 'pricing_plans' => KnowledgeProductRenderer::class, 'reviews' => KnowledgeProductRenderer::class, 'faq' => KnowledgeProductRenderer::class, 'stats' => KnowledgeProductRenderer::class, 'highlights' => KnowledgeProductRenderer::class, 'feature_intro' => KnowledgeProductRenderer::class, 'tilt_cases' => KnowledgeProductRenderer::class, 'slider' => SliderRenderer::class, 'slider_media_combo' => SliderRenderer::class, 'user_card' => UserRenderer::class, 'author_card' => UserRenderer::class, 'user_ranking' => UserRenderer::class, 'user_list' => UserRenderer::class, ]; } public static function render(string $slug, array $instance, array $context = []): string { $renderer = self::all()[$slug] ?? null; if ($renderer === null || !is_callable([$renderer, 'render'])) { return ''; } return (string) $renderer::render($slug, $instance, $context); } public static function supports_items(string $slug): bool { return in_array($slug, ['posts', 'tab_posts', 'oneline_posts', 'hot_posts'], true); } }