Init Embed Posts – Stylish, Fast, Portable
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:
- Embed any public post or WooCommerce product
- Works anywhere: raw HTML, CMS, blog, landing page…
- Block Editor block: “Embed Button”, equivalent to
[init_embed_code], with a live preview in the editor - Abilities API (WordPress 6.9+): read-only
get-embed-dataability for post/product embed data, discoverable viawp_get_abilities()and thewp-abilities/v1REST namespace - Beautiful card layout:
- Site name + favicon
- Title, excerpt, date (for posts)
- Featured image, horizontal gallery (optional)
- Product name, price, sale price with strikethrough
- “Add to cart” styled button (optional)
- Auto dark mode, adapts to embedding site
- Hover effects and modern UI
- Skeleton loader while waiting for data
- JS-only, no iframe, no jQuery, no dependency
- Lazy-loads embed cards as they scroll into view
- Auto-detects embeds inserted dynamically after page load (AJAX/SPA)
- Modal UI to generate personalized embed code
- Smart
<script>switching:init-embed.jsfor postsinit-embed-product.jsfor Woo products
- Embed attributes:
data-theme="light|dark|auto"– force or auto-detect themedata-image,data-featured,data-cart– control content
- Cached REST API (1 year, revalidated via ETag when the post/product is updated)
- Price range display for WooCommerce variable products
- Configurable gallery image limit and default embed theme (Settings page)
- Developer filters to customize data and HTML
What’s New in Version 2.0.0
- Block Editor support: new “Embed Button” block, equivalent to the
[init_embed_code]shortcode, with a live editor preview — optional, the shortcode still works exactly as before - Abilities API support (WordPress 6.9+): new read-only
init-embed-posts/get-embed-dataability for post/product embed data — optional and fully backward-compatible on older WordPress versions - Requires at least raised from 5.5 to 6.9 to support the Abilities API.
Requires PHPremains 7.4
See full details in the changelog below.
Abilities API (WordPress 6.9+)
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 anidandtype(postorproduct)
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.
Filters for Developers
These filters give you full control over how data is rendered and returned.
JS config override (highest priority):
-
window.InitPluginSuiteEmbedPostsConfigSet this object before the page renders (e.g. viawp_add_inline_scriptin 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_responseModify REST API response for posts. -
init_plugin_suite_embed_products_rest_responseModify REST API response for Woo products. -
init_plugin_suite_embed_posts_view_count_keysCustomize 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_limitOverride 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_excerptCustomize excerpt for posts. -
init_plugin_suite_embed_products_excerptCustomize excerpt for products.
Image control:
-
init_plugin_suite_embed_posts_imagesFilter image list for embedded post. -
init_plugin_suite_embed_products_imagesFilter image list for embedded product. -
init_plugin_suite_embed_posts_extracted_imagesFilter raw image URLs extracted from post content.
Favicon:
-
init_plugin_suite_embed_posts_favicon_urlOverride favicon for posts. -
init_plugin_suite_embed_products_favicon_urlOverride favicon for products.
HTML output filters:
init_plugin_suite_embed_posts_shortcode_htmlCustomize HTML output of the[init_embed_code]shortcode. Allows complete control over button markup, styling, and attributes.
Auto-insert locations:
init_embed_insert_locationsCustomize or filter valid auto-insert positions (e.g., after title, before content, etc).
License
This plugin is licensed under the GPLv2 or later. You are free to use, modify, and distribute it under the same license.
