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 + 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-data ability for post/product embed data, discoverable via wp_get_abilities() and the wp-abilities/v1 REST 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 switching: init-embed.js for posts init-embed-product.js for Woo products Embed attributes: data-theme="light|dark|auto" – force or auto-detect theme data-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-data ability 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 PHP remains 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 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. Filters for Developers 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 Customize HTML output of the [init_embed_code] shortcode. Allows complete control over button markup, styling, and attributes. Auto-insert locations: init_embed_insert_locations Customize 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.
Top keywords
- embed35×4.03%
- init20×2.30%
- posts15×1.73%
- init plugin suite13×1.50%
- suite13×1.50%
- rest12×1.38%
- suite embed12×1.38%
- post11×1.27%
- products11×1.27%
- api10×1.15%
- data10×1.15%
- embed posts10×1.15%
Insert Pages
Insert Pages lets you embed any WordPress content (e.g., pages, posts, custom post types) into other WordPress content using the Shortcode API. It also includes a widget for inserting pages into any widget area. The real power of Insert Pages comes when you start creating custom post types, either programmatically in your theme, or using another plugin like Custom Post Type UI. You can then abstract away common data types (like videos, quizzes, due dates) into their own custom post types, and then show those pieces of content within your normal pages and posts by Inserting them as a shortcode. Advanced Tutorial Contributor Wes Modes has graciously written an updated tutorial for the Gutenberg era, focused on creating a custom post type with custom fields and a custom template for rendering content. Read it here: https://medium.com/@wesmodes/using-wordpress-insert-pages-plugin-with-your-custom-post-types-and-custom-templates-535c141f9635 Example: Normal Use Case Say you teach a course and you’re constantly referring to an assignment due date in your course website. The next semester the due date changes, and you have to go change all of the locations you referred to it. Instead, you’d rather just change the date once! With Insert Pages, you can do the following: Create a custom post type called Due Date. Create a new Due Date called Assignment 1 Due Date with Fri Nov 22, 2013 as its content. Edit all the pages where the due date occurs and use the Insert Pages toolbar button to insert a reference to the Due Date you just created. Be sure to set the Display to Content so Fri Nov 22, 2013 shows wherever you insert it. The shortcode you just created should look something like this: [insert page='assignment-1-due-date' display='content'] That’s it! Now, when you want to change the due date, just edit the Assignment 1 Due Date custom post you created, and it will automatically be updated on all the pages you inserted it on. Example: Advanced Use Case Say your site has a lot of video content, and you want to include video transcripts and video lengths along with the videos wherever you show them. You could just paste the transcripts into the page content under the video, but then you’d have to do this on every page the video showed on. (It’s also just a bad idea, architecturally!) With Insert Pages, you can use a custom post type and create a custom theme template to display your videos+transcripts+lengths just the way you want! Create a custom post type called Video. Use a plugin like Advanced Custom Fields to add extra fields to your new Video custom post type. Add a Video URL field, a Transcript field, and a Video Length field. Create a new Video called My Awesome Video with the following values in its fields: Video URL: http://www.youtube.com/watch?v=oHg5SJYRHA0 Transcript: We’re no strangers to love, You know the rules and so do I… Video Length: 3:34 Create a template in your theme so we can display the video content as we want. I won’t cover this step here since it’s pretty involved, but you can find more help in the WordPress Codex. Let’s assume you created a template called Video with transcript (video-with-transcript.php) that shows the youtube video in a fancybox, and includes a button that shows the text transcript when a user clicks on it. Edit the pages where you want the video to show up and use the Insert Pages toolbar button to insert a reference to the Video you just created. Be sure to set the Display to Use a custom template, and select your new template Video with transcript. The shortcode you just created should look something like this: [insert page='my-awesome-video' display='video-with-transcript.php'] That’s it! Now you can create all sorts of video content and know that it’s being tracked cleanly in the database as its own custom post type, and you can place videos all over your site and not worry about lots of duplicate content. The possibilities are endless!