{"id":239069,"date":"2025-06-27T19:08:20","date_gmt":"2025-06-27T19:08:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/init-embed-posts\/"},"modified":"2025-12-23T05:16:01","modified_gmt":"2025-12-23T05:16:01","slug":"init-embed-posts","status":"publish","type":"plugin","link":"https:\/\/twd.wordpress.org\/plugins\/init-embed-posts\/","author":14479633,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.6","stable_tag":"1.6","tested":"6.9.4","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"Init Embed Posts","header_author":"Init HTML","header_description":"Embed any WordPress post externally like a Twitter Card. No iframe, no shortcode \u2013 just pure magic.","assets_banners_color":"e44b48","last_updated":"2025-12-23 05:16:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/inithtml.com\/plugin\/init-embed-posts\/","header_author_uri":"https:\/\/inithtml.com\/","rating":5,"author_block_rating":0,"active_installs":90,"downloads":964,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"brokensmile.2103","date":"2025-06-28 04:28:05"},"1.2":{"tag":"1.2","author":"brokensmile.2103","date":"2025-06-30 07:04:06"},"1.3":{"tag":"1.3","author":"brokensmile.2103","date":"2025-07-11 06:59:20"},"1.4":{"tag":"1.4","author":"brokensmile.2103","date":"2025-08-22 07:42:20"},"1.5":{"tag":"1.5","author":"brokensmile.2103","date":"2025-11-14 15:45:07"},"1.6":{"tag":"1.6","author":"brokensmile.2103","date":"2025-12-23 05:16:01"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3318945,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3318945,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3318945,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3318945,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1","1.2","1.3","1.4","1.5","1.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3324833,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3324833,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3318945,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3319721,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Modal code generator","2":"Embed card \u2013 post","3":"Embed card \u2013 product","4":"Embed card \u2013 post with images"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[230,8479,23853,286,244228],"plugin_category":[56],"plugin_contributors":[242666],"plugin_business_model":[],"class_list":["post-239069","plugin","type-plugin","status-publish","hentry","plugin_tags-embed","plugin_tags-post-preview","plugin_tags-rest-api","plugin_tags-woocommerce","plugin_tags-wordpress-card","plugin_category-social-and-sharing","plugin_contributors-brokensmile2103-1","plugin_committers-brokensmile2103-1"],"banners":{"banner":"https:\/\/ps.w.org\/init-embed-posts\/assets\/banner-772x250.png?rev=3318945","banner_2x":"https:\/\/ps.w.org\/init-embed-posts\/assets\/banner-1544x500.png?rev=3318945","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/init-embed-posts\/assets\/icon-128x128.png?rev=3318945","icon_2x":"https:\/\/ps.w.org\/init-embed-posts\/assets\/icon-256x256.png?rev=3318945","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/init-embed-posts\/assets\/screenshot-1.png?rev=3324833","caption":"Modal code generator"},{"src":"https:\/\/ps.w.org\/init-embed-posts\/assets\/screenshot-2.png?rev=3324833","caption":"Embed card \u2013 post"},{"src":"https:\/\/ps.w.org\/init-embed-posts\/assets\/screenshot-3.png?rev=3318945","caption":"Embed card \u2013 product"},{"src":"https:\/\/ps.w.org\/init-embed-posts\/assets\/screenshot-4.png?rev=3319721","caption":"Embed card \u2013 post with images"}],"raw_content":"<!--section=description-->\n<p>Init Embed Posts lets you embed WordPress content externally \u2013 with beautiful cards, real-time REST API data, and zero friction.<\/p>\n\n<p>Instead of using iframes or clunky oEmbed, this plugin gives you clean <code>&lt;div&gt;<\/code> + <code>&lt;script&gt;<\/code> snippets, which load the post or product dynamically using WordPress REST API. Designed for speed, style, and full control \u2013 using pure JavaScript and smart caching.<\/p>\n\n<p>This plugin is part of the <a href=\"https:\/\/en.inithtml.com\/init-plugin-suite-minimalist-powerful-and-free-wordpress-plugins\/\">Init Plugin Suite<\/a> \u2014 a collection of minimalist, fast, and developer-focused tools for WordPress.<\/p>\n\n<p>GitHub repository: <a href=\"https:\/\/github.com\/brokensmile2103\/init-embed-posts\">https:\/\/github.com\/brokensmile2103\/init-embed-posts<\/a><\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Embed any public post or WooCommerce product<\/li>\n<li>Works anywhere: raw HTML, CMS, blog, landing page\u2026<\/li>\n<li>Beautiful card layout:\n\n<ul>\n<li>Site name + favicon<\/li>\n<li>Title, excerpt, date (for posts)<\/li>\n<li>Featured image, horizontal gallery (optional)<\/li>\n<li>Product name, price, sale price with strikethrough<\/li>\n<li>\"Add to cart\" styled button (optional)<\/li>\n<li>Auto dark mode, adapts to embedding site<\/li>\n<\/ul><\/li>\n<li>Hover effects and modern UI<\/li>\n<li>Skeleton loader while waiting for data<\/li>\n<li>JS-only, no iframe, no jQuery, no dependency<\/li>\n<li>Modal UI to generate personalized embed code<\/li>\n<li>Smart <code>&lt;script&gt;<\/code> switching:\n\n<ul>\n<li><code>init-embed.js<\/code> for posts<\/li>\n<li><code>init-embed-product.js<\/code> for Woo products<\/li>\n<\/ul><\/li>\n<li>Embed attributes:\n\n<ul>\n<li><code>data-theme=\"light|dark|auto\"<\/code> \u2013 force or auto-detect theme<\/li>\n<li><code>data-image<\/code>, <code>data-featured<\/code>, <code>data-cart<\/code> \u2013 control content<\/li>\n<\/ul><\/li>\n<li>Cached REST API (immutable, 1 year)<\/li>\n<li>Developer filters to customize data and HTML<\/li>\n<\/ul>\n\n<h3>Filters for Developers<\/h3>\n\n<p>These filters give you full control over how data is rendered and returned.<\/p>\n\n<p><strong>REST response filters:<\/strong><\/p>\n\n<ul>\n<li><p><code>init_plugin_suite_embed_posts_rest_response<\/code><br \/>\nModify REST API response for posts.<\/p><\/li>\n<li><p><code>init_plugin_suite_embed_products_rest_response<\/code><br \/>\nModify REST API response for Woo products.<\/p><\/li>\n<li><p><code>init_plugin_suite_embed_posts_view_count_keys<\/code><br \/>\nCustomize the list of post meta keys used to detect view count. Supports array of meta keys, ordered by priority.<\/p><\/li>\n<\/ul>\n\n<p><strong>Excerpt filters:<\/strong><\/p>\n\n<ul>\n<li><p><code>init_plugin_suite_embed_posts_excerpt<\/code><br \/>\nCustomize excerpt for posts.<\/p><\/li>\n<li><p><code>init_plugin_suite_embed_products_excerpt<\/code><br \/>\nCustomize excerpt for products.<\/p><\/li>\n<\/ul>\n\n<p><strong>Image control:<\/strong><\/p>\n\n<ul>\n<li><p><code>init_plugin_suite_embed_posts_images<\/code><br \/>\nFilter image list for embedded post.<\/p><\/li>\n<li><p><code>init_plugin_suite_embed_products_images<\/code><br \/>\nFilter image list for embedded product.<\/p><\/li>\n<li><p><code>init_plugin_suite_embed_posts_extracted_images<\/code><br \/>\nFilter raw image URLs extracted from post content.<\/p><\/li>\n<\/ul>\n\n<p><strong>Favicon:<\/strong><\/p>\n\n<ul>\n<li><p><code>init_plugin_suite_embed_posts_favicon_url<\/code><br \/>\nOverride favicon for posts.<\/p><\/li>\n<li><p><code>init_plugin_suite_embed_products_favicon_url<\/code><br \/>\nOverride favicon for products.<\/p><\/li>\n<\/ul>\n\n<p><strong>HTML output filters:<\/strong><\/p>\n\n<ul>\n<li><code>init_plugin_suite_embed_posts_shortcode_html<\/code><br \/>\nCustomize HTML output of the <code>[init_embed_code]<\/code> shortcode. Allows complete control over button markup, styling, and attributes.<\/li>\n<\/ul>\n\n<p><strong>Auto-insert locations:<\/strong><\/p>\n\n<ul>\n<li><code>init_embed_insert_locations<\/code><br \/>\nCustomize or filter valid auto-insert positions (e.g., after title, before content, etc).<\/li>\n<\/ul>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPLv2 or later.<br \/>\nYou are free to use, modify, and distribute it under the same license.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate this plugin.<\/li>\n<li>Use the <code>[init_embed_code]<\/code> shortcode to show the \u201cCopy Embed Code\u201d button.<\/li>\n<li>Click the button \u2192 configure your embed \u2192 copy the code.<\/li>\n<li>Paste it anywhere: blog, site builder, static HTML, you name it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20it%20use%20iframes%3F'><h3>Does it use iframes?<\/h3><\/dt>\n<dd><p>No. It renders HTML via JS directly.<\/p><\/dd>\n<dt id='can%20i%20embed%20woocommerce%20products%3F'><h3>Can I embed WooCommerce products?<\/h3><\/dt>\n<dd><p>Yes, as of v1.1. Just add <code>data-type=\"product\"<\/code> and use the new script.<\/p><\/dd>\n<dt id='is%20it%20fast%3F'><h3>Is it fast?<\/h3><\/dt>\n<dd><p>Yes. The REST JSON response is immutable and cacheable via Cloudflare or CDN for 1 year.<\/p><\/dd>\n<dt id='can%20i%20restyle%20the%20embed%20card%3F'><h3>Can I restyle the embed card?<\/h3><\/dt>\n<dd><p>Yes. All styles are scoped. You can override with your own CSS.<\/p><\/dd>\n<dt id='can%20i%20disable%20auto-insert%20button%3F'><h3>Can I disable auto-insert button?<\/h3><\/dt>\n<dd><p>Yes. Go to Settings \u2192 Init Embed Posts and uncheck all positions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6 \u2013 December 23, 2025<\/h4>\n\n<ul>\n<li>Prevent duplicated <code>InitEmbedPostsSettings<\/code> output when shortcode is rendered multiple times on the same page  <\/li>\n<li>Ensure embed UI scripts and localized settings are loaded only once per request  <\/li>\n<li>Improve shortcode rendering stability when auto-injected at multiple locations  <\/li>\n<li>Minor internal optimization to reduce redundant processing during content rendering  <\/li>\n<\/ul>\n\n<h4>1.5 \u2013 November 14, 2025<\/h4>\n\n<ul>\n<li>Improved image extraction logic in REST response for more consistent embed visuals  <\/li>\n<li>Enhanced <code>init_plugin_suite_embed_posts_extract_images()<\/code> with URL sanitization, duplication checks, and safer handling of invalid sources  <\/li>\n<li>Ensured embed cards always return clean, valid image URLs and respect the requested limit  <\/li>\n<li>Minor REST performance refinements and internal hardening  <\/li>\n<li>Code cleanup for better long-term maintainability <\/li>\n<\/ul>\n\n<h4>1.4 \u2013 August 22, 2025<\/h4>\n\n<ul>\n<li>Add <code>init_embed_posts_shortcode_html<\/code> filter for customizing shortcode button HTML<\/li>\n<li>Allow developers to completely override embed button markup and styling<\/li>\n<li>Improved extensibility for theme and plugin developers<\/li>\n<\/ul>\n\n<h4>1.3 \u2013 July 9, 2025<\/h4>\n\n<ul>\n<li>Refactor embed modal: now fully rendered via JavaScript, no PHP template used<\/li>\n<li>Add two new toggle options in modal: \"Show post meta\" and \"Show review\"<\/li>\n<li>Post meta now displays published time, view count, and comment count with icons<\/li>\n<li>Review support: renders 5-star rating and average score if Init Review System is active<\/li>\n<li>Enhance REST API:\n\n<ul>\n<li>Add <code>comment_count<\/code>, <code>view_count<\/code>, and <code>review<\/code> data<\/li>\n<li>Support multiple view count plugins (Jetpack, WP-PostViews, WP Statistics, Post Views Counter)<\/li>\n<li>Allow custom view field via <code>init_plugin_suite_embed_posts_view_count_keys<\/code> filter<\/li>\n<\/ul><\/li>\n<li><code>published_at<\/code> now returns human-readable time difference (e.g. <code>2 days<\/code>) instead of ISO<\/li>\n<li>Minor UI adjustments and cleaner card layout<\/li>\n<\/ul>\n\n<h4>1.2 \u2013 June 30, 2025<\/h4>\n\n<ul>\n<li>Add <code>uninstall.php<\/code> to clean up settings on deletion  <\/li>\n<li>Change default theme from <code>auto<\/code> to <code>light<\/code> for better compatibility  <\/li>\n<\/ul>\n\n<h4>1.1 \u2013 June 14, 2025<\/h4>\n\n<ul>\n<li>Add support for WooCommerce product embeds  <\/li>\n<li>New REST endpoint: <code>\/product\/{id}<\/code>  <\/li>\n<li>Product embed supports featured image, price, sale price (with strikethrough), and dark mode  <\/li>\n<li>Auto-insert embed button after product meta (if enabled)  <\/li>\n<li>Embed code now includes <code>data-type<\/code> to switch JS logic  <\/li>\n<li>New embed script: <code>init-embed-product.js<\/code>  <\/li>\n<li>Cleaned up UI styles and fixed edge cases  <\/li>\n<\/ul>\n\n<h4>1.0 \u2013 June 9, 2025<\/h4>\n\n<ul>\n<li>Initial release  <\/li>\n<li>Embed any post with responsive card  <\/li>\n<li>Modal UI for embed code generation  <\/li>\n<li>REST API with cache-friendly headers  <\/li>\n<li>Vanilla JS \u2013 lightweight and dependency-free  <\/li>\n<li>Works anywhere, no iframe\/oEmbed needed<\/li>\n<\/ul>","raw_excerpt":"Embed WordPress posts or products anywhere \u2013 like a Twitter Card. No iframe. No oEmbed. Just pure JS, full control, and beautiful design.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/239069","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=239069"}],"author":[{"embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brokensmile2103-1"}],"wp:attachment":[{"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=239069"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=239069"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=239069"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=239069"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=239069"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/twd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=239069"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}