--- name: shortcode-block-security description: > Use when registering a shortcode with add_shortcode or a dynamic block with a render_callback, or processing shortcode / block attributes. Normalizes attributes with shortcode_atts, validates against allowlists, and escapes all rendered output for its context with esc_html, esc_attr, esc_url, or wp_kses_post. Prevents stored and reflected XSS in rendered content. compatibility: "Examples generally use PHP 7.4 syntax; check each API against target WordPress/PHP versions. Use maintained WordPress and supported PHP in production. Shell examples require their named tools." license: MIT metadata: tags: "wordpress, security, php, shortcode, block, xss, gutenberg" --- # Shortcode & dynamic block security ## When to use this skill Use this skill whenever code renders content from shortcodes or dynamic blocks: - Registering a shortcode with `add_shortcode()`. - Reading or outputting shortcode attributes (`$atts`) or enclosed content (`$content`). - Registering a dynamic block with a `render_callback`. - Reading block attributes in a server-side render. - Building HTML, URLs, or classes from shortcode/block input. Shortcodes and dynamic blocks are stored XSS sinks: a contributor enters `[my_card title="