fix: Block shortcode rendering during page template loading
All checks were successful
Create Release Package / build-release (push) Successful in 1m2s

- Added $loading_page_template flag in TemplateLoader
- template-wrapper.php sets flag before loading theme header/footer
- Shortcodes::render_template() returns early if flag is set
- Prevents recursion from theme components, widgets, or other plugins

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-02 17:09:16 +01:00
parent eb85870909
commit a41eddbc49
5 changed files with 63 additions and 5 deletions

View File

@@ -44,6 +44,42 @@ class TemplateLoader {
*/
private static int $shortcode_context_depth = 0;
/**
* Flag indicating we're currently loading a FediStream page template.
* This completely blocks any nested FediStream shortcode rendering.
*
* @var bool
*/
private static bool $loading_page_template = false;
/**
* Enter page template loading mode.
* This blocks ALL shortcode rendering during page template loading.
*
* @return void
*/
public static function enter_page_template_loading(): void {
self::$loading_page_template = true;
}
/**
* Exit page template loading mode.
*
* @return void
*/
public static function exit_page_template_loading(): void {
self::$loading_page_template = false;
}
/**
* Check if we're loading a page template.
*
* @return bool
*/
public static function is_loading_page_template(): bool {
return self::$loading_page_template;
}
/**
* Enter shortcode rendering context.
* Call this before rendering shortcode content to prevent recursive shortcode processing.