Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Init Embed Posts – Stylish, Fast, Portable

Embed WordPress posts or products anywhere – like a Twitter Card. No iframe. No oEmbed. Just pure JS, full control, and beautiful design.

Pure JavaScript. Beautiful Cards. Works Anywhere.

Version License Made with ❤️ in HCMC

Overview

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.

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 <script> 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

Shortcode

[init_embed_code]

Displays the Embed Generator button.

Attributes:

  • text: Button text label
  • class: CSS class for wrapper
  • post_id: Optional post override

Block Editor

Embed Button

Under the Init Embed Posts category in the block inserter. Equivalent to [init_embed_code] – same markup, same behavior, just inserted visually with a live server-side preview in the editor. No block-level settings: it always reflects the current post or product; configure the default embed theme and gallery image limit from the Settings page.

Abilities API (WordPress 6.9+)

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). Same data as the REST endpoints below.

Discoverable and executable via PHP (wp_get_abilities()), and — for sites that opt into exposing it — the wp-abilities/v1 REST namespace. Fully optional: on WordPress versions older than 6.9, this integration silently does nothing and the rest of the plugin is unaffected.

REST API Endpoints

GET /wp-json/initempo/v1/post/{id}

Returns data for embedding a post.

GET /wp-json/initempo/v1/product/{id}

Returns data for embedding a WooCommerce product.

Developer Filters

REST response filters

  • init_plugin_suite_embed_posts_rest_response
  • init_plugin_suite_embed_products_rest_response
  • init_plugin_suite_embed_posts_view_count_keys
  • init_plugin_suite_embed_posts_gallery_limit

Excerpt filters

  • init_plugin_suite_embed_posts_excerpt
  • init_plugin_suite_embed_products_excerpt

Image filters

  • init_plugin_suite_embed_posts_images
  • init_plugin_suite_embed_products_images
  • init_plugin_suite_embed_posts_extracted_images

Favicon

  • init_plugin_suite_embed_posts_favicon_url
  • init_plugin_suite_embed_products_favicon_url

HTML output filters

  • init_plugin_suite_embed_posts_shortcode_html

Auto-insert

  • init_embed_insert_locations

Installation

  1. Upload to /wp-content/plugins/init-embed-posts
  2. Activate in WordPress admin
  3. Use [init_embed_code] — or the equivalent "Embed Button" block — to enable the generator
  4. Copy + paste the embed wherever you like

License

GPLv2 or later — free, open source, developer-first.

Part of Init Plugin Suite

Init Embed Posts is part of the Init Plugin Suite — a collection of blazing-fast, no-bloat plugins made for WordPress developers who care about quality and speed.

About

Embed WordPress posts or products anywhere – like a Twitter Card. No iframe. No oEmbed. Just pure JS, full control, and beautiful design.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages