{"id":354400,"date":"2026-08-18T12:31:48","date_gmt":"2026-08-18T12:31:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/flex-shortcoder\/"},"modified":"2026-08-18T12:32:47","modified_gmt":"2026-08-18T12:32:47","slug":"flex-shortcodes","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/flex-shortcodes\/","author":23082855,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Flex Shortcodes","header_author":"FLEX","header_description":"Create reusable HTML shortcodes and insert them anywhere with a simple [flexshortcodes] tag.","assets_banners_color":"fdfdfe","last_updated":"2026-08-18 12:32:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/flexible.am\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"flexfields","date":"2026-08-18 12:31:23"},"1.0.1":{"tag":"1.0.1","author":"flexfields","date":"2026-08-18 12:32:47"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3652848,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3652848,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3652848,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3652848,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3652848,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3652848,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"flex-shortcodes\/snippet":{"name":"flex-shortcodes\/snippet","title":"Flex Shortcode"}},"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3652848,"resolution":"1","location":"assets","locale":"","width":1280,"height":949},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3652848,"resolution":"2","location":"assets","locale":"","width":1280,"height":1009},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3652848,"resolution":"3","location":"assets","locale":"","width":1280,"height":949},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3652848,"resolution":"4","location":"assets","locale":"","width":1280,"height":4980}},"screenshots":{"1":"All Shortcodes \u2014 list, groups, copyable tags, import\/export","2":"Editor \u2014 HTML code editor, Groups, and Shortcode meta box","3":"Settings \u2014 optional output wrapper","4":"Usage \u2014 in-plugin guide"}},"plugin_section":[],"plugin_tags":[529,246,54012,80,9309],"plugin_category":[43],"plugin_contributors":[240619,232306],"plugin_business_model":[],"class_list":["post-354400","plugin","type-plugin","status-publish","hentry","plugin_tags-content","plugin_tags-html","plugin_tags-reusable-content","plugin_tags-shortcode","plugin_tags-snippet","plugin_category-customization","plugin_contributors-flexfields","plugin_contributors-hovoqoch","plugin_committers-flexfields"],"banners":{"banner":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/banner-772x250.png?rev=3652848","banner_2x":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/banner-1544x500.png?rev=3652848","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/icon-128x128.png?rev=3652848","icon_2x":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/icon-256x256.png?rev=3652848","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/screenshot-1.png?rev=3652848","caption":"All Shortcodes \u2014 list, groups, copyable tags, import\/export"},{"src":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/screenshot-2.png?rev=3652848","caption":"Editor \u2014 HTML code editor, Groups, and Shortcode meta box"},{"src":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/screenshot-3.png?rev=3652848","caption":"Settings \u2014 optional output wrapper"},{"src":"https:\/\/ps.w.org\/flex-shortcodes\/assets\/screenshot-4.png?rev=3652848","caption":"Usage \u2014 in-plugin guide"}],"raw_content":"<!--section=description-->\n<p><strong>Flex Shortcodes<\/strong> stores HTML once and reuses it in posts, pages, widgets, and templates. Each snippet is a private WordPress post. Only published snippets print on the front end. PHP is never executed.<\/p>\n\n<ul>\n<li>Insert by slug: <code>[flexshortcodes name=\"promo-banner\"]<\/code> or by ID: <code>[flexshortcodes id=\"123\"]<\/code><\/li>\n<li><strong>Flex Shortcode<\/strong> block in the block editor, and a <strong>Flex Shortcode<\/strong> button in the classic editor<\/li>\n<li>Optional parameters: <code>[flexshortcodes name=\"button\" label=\"Buy\"]<\/code> fills <code>{{label}}<\/code> in the HTML<\/li>\n<li>Groups to organize the admin list (they do not change front-end output)<\/li>\n<li>Duplicate a snippet, and find usages in posts, pages, and text widgets<\/li>\n<li>JSON import and export (groups included)<\/li>\n<li>Nested WordPress shortcodes, including other <code>[flexshortcodes]<\/code> tags, with circular includes blocked<\/li>\n<li>Optional wrapper (<code>div<\/code> or <code>span<\/code>); off by default so snippets can be used inline<\/li>\n<li>One-click copy from the list table and the editor sidebar<\/li>\n<li>HTML-only editor so TinyMCE does not rewrite markup<\/li>\n<li>Clean uninstall removes settings, snippet posts, and groups<\/li>\n<\/ul>\n\n<p>No remote calls. CSS and JavaScript load from this plugin only.<\/p>\n\n<h4>Content rules<\/h4>\n\n<ul>\n<li>Saved HTML follows your WordPress capabilities (<code>unfiltered_html<\/code> for trusted roles)<\/li>\n<li>Front-end output is sanitized with <code>wp_kses_post()<\/code> (post-allowed HTML only)<\/li>\n<li>PHP is never executed<\/li>\n<li>Missing or unpublished shortcodes output nothing on the front end<\/li>\n<li>Parameter values are HTML-escaped; <code>name<\/code> and <code>id<\/code> are reserved for lookup<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Flex Shortcodes stores shortcode titles, HTML, and optional group names in your WordPress database as custom posts and a private taxonomy. It does not send data to external servers and does not load third-party services.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>flex-shortcodes<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>Flex Shortcodes<\/strong>.<\/li>\n<li>Go to <strong>Flex Shortcodes \u2192 All Shortcodes<\/strong>, click <strong>Add Shortcode<\/strong>, paste HTML, and publish.<\/li>\n<li>Insert with the Flex Shortcode block, the classic <strong>Flex Shortcode<\/strong> button, or by pasting <code>[flexshortcodes name=\"your-slug\"]<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20insert%20a%20shortcode%3F\"><h3>How do I insert a shortcode?<\/h3><\/dt>\n<dd><p>Use <code>[flexshortcodes name=\"slug\"]<\/code> where <code>slug<\/code> is the permalink slug, not the display title. The slug is created from the title on first save; editing the title later does not change it. You can also use <code>[flexshortcodes id=\"123\"]<\/code>, the Flex Shortcode block, or the classic editor button.<\/p><\/dd>\n<dt id=\"can%20i%20pass%20parameters%3F\"><h3>Can I pass parameters?<\/h3><\/dt>\n<dd><p>Yes. Put <code>{{label}}<\/code> (or another key) in the snippet HTML, then insert <code>[flexshortcodes name=\"button\" label=\"Buy\"]<\/code>. Keys start with a letter. <code>name<\/code> and <code>id<\/code> are reserved. Missing values print as empty strings. The block picker does not pass extra attributes; paste a tag when you need parameters.<\/p><\/dd>\n<dt id=\"what%20are%20groups%3F\"><h3>What are groups?<\/h3><\/dt>\n<dd><p>Admin labels for filtering the list. Assign them in the snippet editor. Manage names under <strong>Flex Shortcodes \u2192 Groups<\/strong> if you can manage categories. Groups do not wrap or hide output on the site.<\/p><\/dd>\n<dt id=\"can%20i%20nest%20shortcodes%3F\"><h3>Can I nest shortcodes?<\/h3><\/dt>\n<dd><p>Yes. Snippet HTML runs through <code>do_shortcode()<\/code>, so other WordPress shortcodes (including other <code>[flexshortcodes]<\/code> tags) work. Circular nesting is blocked. Nested snippets need their own attributes.<\/p><\/dd>\n<dt id=\"does%20this%20run%20php%20in%20shortcodes%3F\"><h3>Does this run PHP in shortcodes?<\/h3><\/dt>\n<dd><p>No. PHP is never executed. Only HTML, placeholders, and nested shortcodes are rendered.<\/p><\/dd>\n<dt id=\"how%20do%20import%20and%20export%20work%3F\"><h3>How do import and export work?<\/h3><\/dt>\n<dd><p>Export downloads JSON of the snippets you can see (not trash). Import creates new snippets; it does not overwrite. Maximum 2 MB and 500 items per file.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%3F\"><h3>What happens when I uninstall?<\/h3><\/dt>\n<dd><p>All Flex Shortcodes settings, <code>flex_sc<\/code> posts (including trash, auto-drafts, and revisions), and Groups terms are deleted. Deactivating alone does not delete data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>About FLEX links the full plugin suite on WordPress.org.<\/li>\n<li>List flexfields and hovoqoch as contributors.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: <code>[flexshortcodes]<\/code> by slug or ID, HTML editor, parameters, groups, inserter, duplicate, usages, JSON import\/export.<\/li>\n<li>Display name and slug are Flex Shortcodes \/ flex-shortcodes (WordPress shortcodes; not related to any third-party \u201cShortcoder\u201d product).<\/li>\n<li>PHP functions, options, hooks, and the shortcode tag use the <code>flexshortcodes<\/code> prefix.<\/li>\n<li>Front-end output is sanitized with <code>wp_kses_post()<\/code>.<\/li>\n<\/ul>","raw_excerpt":"Create reusable HTML snippets and insert them anywhere with [flexshortcodes], a block picker, or the classic editor button.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354400"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/flexfields"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354400"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354400"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354400"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354400"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354400"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}