

Modal code generator
Init Embed Posts lets you embed WordPress content externally – with beautiful cards, real-time REST API data, and zero friction.
Instead of using iframes or clunky oEmbed, this plugin gives you clean <div> + <script> snippets, which load the post or product dynamically using WordPress REST API. Designed for speed, style, and full control – using pure JavaScript and smart caching.
Prefer working in the Block Editor? The Embed Button block does exactly what the [init_embed_code] shortcode does – no shortcode needed if you’d rather insert it visually, with a live preview right in the editor.
For AI agents and automated tools, embed data (title, excerpt, thumbnail, images, and — for WooCommerce products — price) is also exposed as a read-only Abilities API ability (WordPress 6.9+), the same data used to render the cards.
This plugin is part of the Init Plugin Suite — a collection of minimalist, fast, and developer-focused tools for WordPress.
GitHub repository: https://github.com/brokensmile2103/init-embed-posts
Features:
[init_embed_code], with a live preview in the editorget-embed-data ability for post/product embed data, discoverable via wp_get_abilities() and the wp-abilities/v1 REST namespace<script> switching:
init-embed.js for postsinit-embed-product.js for Woo productsdata-theme="light|dark|auto" – force or auto-detect themedata-image, data-featured, data-cart – control content[init_embed_code] shortcode, with a live editor preview — optional, the shortcode still works exactly as beforeinit-embed-posts/get-embed-data ability for post/product embed data — optional and fully backward-compatible on older WordPress versionsRequires PHP remains 7.4See full details in the changelog below.
On WordPress 6.9 and above, Init Embed Posts registers one read-only ability under the init-embed-posts category:
init-embed-posts/get-embed-data — returns embed data (title, excerpt, thumbnail, images, and — for WooCommerce products — price) for a published post or product, given an id and type (post or product)This is discoverable and executable via PHP (wp_get_abilities()), and — for sites that opt into exposing it — the wp-abilities/v1 REST namespace, using the exact same data as the REST endpoints below. This integration is fully optional: on WordPress versions older than 6.9, it silently does nothing and the rest of the plugin is unaffected.
These filters give you full control over how data is rendered and returned.
JS config override (highest priority):
window.InitPluginSuiteEmbedPostsConfig
Set this object before the page renders (e.g. via wp_add_inline_script in a theme) to override embed UI settings in JS, taking priority over the plugin’s Settings page. Currently supports:
theme – "light", "dark", or "auto". Overrides the “Default embed theme” setting for the embed code generator button/modal.Example:
window.InitPluginSuiteEmbedPostsConfig = { theme: ‘dark’ };
REST response filters:
init_plugin_suite_embed_posts_rest_response
Modify REST API response for posts.
init_plugin_suite_embed_products_rest_response
Modify REST API response for Woo products.
init_plugin_suite_embed_posts_view_count_keys
Customize the list of post meta keys used to detect view count. Supports array of meta keys, ordered by priority.
init_plugin_suite_embed_posts_gallery_limit
Override the gallery image limit (defaults to the Settings page value, 1–10) used for both post and product embeds.
Excerpt filters:
init_plugin_suite_embed_posts_excerpt
Customize excerpt for posts.
init_plugin_suite_embed_products_excerpt
Customize excerpt for products.
Image control:
init_plugin_suite_embed_posts_images
Filter image list for embedded post.
init_plugin_suite_embed_products_images
Filter image list for embedded product.
init_plugin_suite_embed_posts_extracted_images
Filter raw image URLs extracted from post content.
Favicon:
init_plugin_suite_embed_posts_favicon_url
Override favicon for posts.
init_plugin_suite_embed_products_favicon_url
Override favicon for products.
HTML output filters:
init_plugin_suite_embed_posts_shortcode_html[init_embed_code] shortcode. Allows complete control over button markup, styling, and attributes.Auto-insert locations:
init_embed_insert_locationsThis plugin is licensed under the GPLv2 or later.
You are free to use, modify, and distribute it under the same license.