Init Embed Posts – Stylish, Fast, Portable

Mô tả

Init Embed Posts cho phép bạn nhúng nội dung WordPress ra bên ngoài – với thẻ đẹp mắt, dữ liệu REST API theo thời gian thực, và không có rào cản.

Thay vì dùng iframe hoặc oEmbed cồng kềnh, plugin này cho bạn các đoạn mã <div> + <script> gọn gàng, tải bài viết hoặc sản phẩm động bằng REST API của WordPress. Được thiết kế vì tốc độ, phong cách, và toàn quyền kiểm soát – dùng JavaScript thuần và lưu đệm thông minh.

Thích làm việc trong Block Editor? Block Embed Button làm chính xác những gì shortcode [init_embed_code] làm – không cần shortcode nếu bạn muốn chèn trực quan, kèm bản xem trước trực tiếp ngay trong trình soạn thảo.

Đối với AI agent và công cụ tự động, dữ liệu nhúng (tiêu đề, đoạn trích, ảnh thu nhỏ, ảnh, và — với sản phẩm WooCommerce — giá) cũng được công khai dưới dạng ability Abilities API chỉ đọc (WordPress 6.9+), cùng dữ liệu dùng để dựng thẻ.

Plugin này là một phần của Init Plugin Suite — bộ sưu tập các công cụ WordPress tối giản, nhanh, và hướng tới lập trình viên.

Kho GitHub: https://github.com/brokensmile2103/init-embed-posts

Tính năng:

  • Nhúng bất kỳ bài viết công khai hoặc sản phẩm WooCommerce nào
  • Hoạt động ở mọi nơi: HTML thô, CMS, blog, landing page…
  • Block Block Editor: “Embed Button”, tương đương với [init_embed_code], kèm bản xem trước trực tiếp trong trình soạn thảo
  • Abilities API (WordPress 6.9+): ability chỉ đọc get-embed-data cho dữ liệu nhúng bài viết/sản phẩm, có thể phát hiện qua wp_get_abilities() và REST namespace wp-abilities/v1
  • Bố cục thẻ đẹp mắt:
    • Tên site + favicon
    • Tiêu đề, đoạn trích, ngày (cho bài viết)
    • Ảnh đại diện, thư viện ảnh ngang (tùy chọn)
    • Tên sản phẩm, giá, giá khuyến mãi kèm gạch ngang
    • Nút kiểu “Thêm vào giỏ hàng” (tùy chọn)
    • Tự động chế độ tối, thích ứng với site nhúng
  • Hiệu ứng khi di chuột và giao diện hiện đại
  • Khung tải trong khi chờ dữ liệu
  • Chỉ JS, không iframe, không jQuery, không phụ thuộc
  • Tải chậm các thẻ nhúng khi chúng cuộn vào tầm nhìn
  • Tự động phát hiện các mục nhúng được chèn động sau khi tải trang (AJAX/SPA)
  • Giao diện modal để tạo mã nhúng cá nhân hóa
  • Chuyển đổi <script> thông minh:
    • init-embed.js cho bài viết
    • init-embed-product.js cho sản phẩm Woo
  • Thuộc tính nhúng:
    • data-theme="light|dark|auto" – buộc dùng hoặc tự động phát hiện theme
    • data-image, data-featured, data-cart – kiểm soát nội dung
  • REST API được lưu đệm (1 năm, xác thực lại qua ETag khi bài viết/sản phẩm được cập nhật)
  • Hiển thị khoảng giá cho sản phẩm biến thể WooCommerce
  • Giới hạn ảnh thư viện và theme nhúng mặc định có thể cấu hình (trang Cài đặt)
  • Filter dành cho lập trình viên để tùy chỉnh dữ liệu và HTML

Có gì mới trong Phiên bản 2.0.0

  • Hỗ trợ Block Editor: block mới “Embed Button”, tương đương với shortcode [init_embed_code], kèm bản xem trước trực tiếp trong trình soạn thảo — tùy chọn, shortcode vẫn hoạt động chính xác như trước
  • Hỗ trợ Abilities API (WordPress 6.9+): ability chỉ đọc mới init-embed-posts/get-embed-data cho dữ liệu nhúng bài viết/sản phẩm — tùy chọn và hoàn toàn tương thích ngược trên các phiên bản WordPress cũ hơn
  • Requires at least được nâng từ 5.5 lên 6.9 để hỗ trợ Abilities API. Requires PHP vẫn giữ nguyên 7.4

Xem chi tiết đầy đủ trong nhật ký thay đổi bên dưới.

Abilities API (WordPress 6.9+)

Trên WordPress 6.9 trở lên, Init Embed Posts đăng ký một ability chỉ đọc trong danh mục init-embed-posts:

  • init-embed-posts/get-embed-data — trả về dữ liệu nhúng (tiêu đề, đoạn trích, ảnh thu nhỏ, ảnh, và — với sản phẩm WooCommerce — giá) cho một bài viết hoặc sản phẩm đã xuất bản, với một id và type (post hoặc product) cho trước

Ability này có thể được phát hiện và thực thi qua PHP (wp_get_abilities()), và — với các site chọn công khai nó — qua REST namespace wp-abilities/v1, dùng chính xác dữ liệu như các endpoint REST bên dưới. Tích hợp này hoàn toàn tùy chọn: trên các phiên bản WordPress cũ hơn 6.9, nó sẽ không làm gì cả và phần còn lại của plugin không bị ảnh hưởng.

Filter dành cho lập trình viên

Các filter này cho bạn toàn quyền kiểm soát cách dữ liệu được hiển thị và trả về.

Ghi đè cấu hình JS (ưu tiên cao nhất):

  • window.InitPluginSuiteEmbedPostsConfig
    Đặt đối tượng này trước khi trang hiển thị (ví dụ qua wp_add_inline_script trong theme) để ghi đè cài đặt giao diện nhúng trong JS, ưu tiên hơn trang Cài đặt của plugin. Hiện hỗ trợ:

    • theme – "light", "dark", hoặc "auto". Ghi đè cài đặt “Theme nhúng mặc định” cho nút/modal tạo mã nhúng.

    Ví dụ:
    window.InitPluginSuiteEmbedPostsConfig = { theme: ‘dark’ };

Filter phản hồi REST:

  • init_plugin_suite_embed_posts_rest_response
    Chỉnh sửa phản hồi REST API cho bài viết.

  • init_plugin_suite_embed_products_rest_response
    Chỉnh sửa phản hồi REST API cho sản phẩm Woo.

  • init_plugin_suite_embed_posts_view_count_keys
    Tùy chỉnh danh sách meta key bài viết dùng để phát hiện lượt xem. Hỗ trợ mảng meta key, sắp xếp theo mức ưu tiên.

  • init_plugin_suite_embed_posts_gallery_limit
    Ghi đè giới hạn ảnh thư viện (mặc định theo giá trị trang cài đặt, 1–10) dùng cho cả nhúng bài viết lẫn sản phẩm.

Filter đoạn trích:

  • init_plugin_suite_embed_posts_excerpt
    Tùy chỉnh đoạn trích cho bài viết.

  • init_plugin_suite_embed_products_excerpt
    Tùy chỉnh đoạn trích cho sản phẩm.

Kiểm soát ảnh:

  • init_plugin_suite_embed_posts_images
    Lọc danh sách ảnh cho bài viết được nhúng.

  • init_plugin_suite_embed_products_images
    Lọc danh sách ảnh cho sản phẩm được nhúng.

  • init_plugin_suite_embed_posts_extracted_images
    Lọc các URL ảnh thô được trích xuất từ nội dung bài viết.

Favicon:

  • init_plugin_suite_embed_posts_favicon_url
    Ghi đè favicon cho bài viết.

  • init_plugin_suite_embed_products_favicon_url
    Ghi đè favicon cho sản phẩm.

Filter kết quả xuất HTML:

  • init_plugin_suite_embed_posts_shortcode_html
    Tùy chỉnh kết quả xuất HTML của shortcode [init_embed_code]. Cho phép toàn quyền kiểm soát mã đánh dấu nút, kiểu dáng, và thuộc tính.

Vị trí tự động chèn:

  • init_embed_insert_locations
    Tùy chỉnh hoặc lọc các vị trí tự động chèn hợp lệ (ví dụ: sau tiêu đề, trước nội dung, v.v.).

Giấy phép

Plugin này được cấp phép theo GPLv2 hoặc phiên bản mới hơn.
Bạn có toàn quyền sử dụng, chỉnh sửa, và phân phối lại theo cùng giấy phép.

Ảnh màn hình

Khối

Plugin này cung cấp 1 khối.

  • Embed Button Insert the "Copy Embed Code" button so visitors can grab an embeddable card for this post or product.

Cài đặt

  1. Cài đặt và kích hoạt plugin này.
  2. Dùng shortcode [init_embed_code] — hoặc block “Embed Button” tương đương trong Block Editor — để hiển thị nút “Sao chép mã nhúng”.
  3. Nhấp nút cấu hình mục nhúng của bạn sao chép mã.
  4. Dán nó ở bất kỳ đâu: blog, trình dựng site, HTML tĩnh, bất cứ nơi nào bạn muốn.

Hỏi đáp

Plugin có dùng iframe không?

Không. Nó dựng HTML trực tiếp qua JS.

Tôi có thể nhúng sản phẩm WooCommerce không?

Có, từ v1.1. Chỉ cần thêm data-type="product" và dùng script mới.

Plugin có nhanh không?

Có. Phản hồi JSON REST có thể lưu đệm qua Cloudflare hoặc CDN lên đến 1 năm, và bao gồm ETag để bộ nhớ đệm tự động xác thực lại và lấy dữ liệu mới ngay khi bài viết hoặc sản phẩm được cập nhật.

Tôi có thể tạo kiểu lại cho thẻ nhúng không?

Có. Mọi kiểu dáng đều được giới hạn phạm vi. Bạn có thể ghi đè bằng CSS riêng của mình.

Tôi có thể tắt nút tự động chèn không?

Có. Vào Settings Init Embed Posts và bỏ chọn mọi vị trí.

Có block Block Editor không?

Có. Block “Embed Button” (trong danh mục Init Embed Posts) làm chính xác những gì shortcode [init_embed_code] làm, kèm bản xem trước trực tiếp trong trình soạn thảo — dùng cái nào bạn thích.

Abilities API là gì và tôi có cần dùng nó không?

Đây là tính năng tùy chọn của WordPress 6.9+ giúp công khai dữ liệu nhúng của plugin dưới dạng một “ability” có thể phát hiện và thực thi cho AI agent và công cụ tự động — cùng dữ liệu như các endpoint REST bên dưới. Bạn không cần tính năng này để các chức năng nhúng thông thường của plugin hoạt động, và nó không làm gì trên các phiên bản WordPress cũ hơn.

Đánh giá

29 Tháng 6, 2025 1 trả lời
Giao diện card đẹp mắt, tùy biến cao Tích hợp dễ dàng, không phụ thuộc vào các thư viện nặng Tối ưu tốc độ nhờ caching và dùng JavaScript thuần Hỗ trợ nhiều loại nội dung như bài viết, sản phẩm WooCommerce Có thể tùy chỉnh linh hoạt qua các thuộc tính và bộ lọc dành cho nhà phát triển Phù hợp cho nhiều loại trang, từ landing page, blog, đến cửa hàng online
Đọc tất cả 2 đánh giá

Người đóng góp & Lập trình viên

“Init Embed Posts – Stylish, Fast, Portable” là mã nguồn mở. Những người sau đã đóng góp vào plugin này.

Những người đóng góp

“Init Embed Posts – Stylish, Fast, Portable” đã được dịch qua 1 ngôn ngữ. Cảm ơn những người tham gia dịch vì đóng góp của họ.

Dịch “Init Embed Posts – Stylish, Fast, Portable” sang ngôn ngữ của bạn.

Muốn tham gia phát triển?

Duyệt code, check out SVN repository, hoặc theo dõi nhật ký phát triển qua RSS.

Nhật ký thay đổi

2.0.0 – 5 tháng 8, 2026

  • Mới: Hỗ trợ Block Editor (Gutenberg): block mới “Embed Button” trong danh mục block Init Embed Posts riêng (thay vì danh mục “Widgets” chung chung), tương đương với shortcode [init_embed_code]. Được đăng ký qua block.json (với tệp PHP render.php kết nối qua trường "render", WP 6.1+) gọi chính xác cùng hàm như shortcode — không lặp lại logic hiển thị, kết quả luôn khớp nhau. Tích hợp trình soạn thảo là một tệp JavaScript thuần, không cần bước build, sử dụng wp.serverSideRender để xem trước trực tiếp
  • Mới: Hỗ trợ Abilities API (WordPress 6.9+): đăng ký một ability chỉ đọc, init-embed-posts/get-embed-data, trong danh mục init-embed-posts — trả về cùng dữ liệu nhúng như các endpoint REST cho một id bài viết hoặc sản phẩm cho trước. Có thể được phát hiện và thực thi qua PHP, wp_get_abilities(), và — khi site chọn tham gia — qua REST namespace wp-abilities/v1. Hoàn toàn tùy chọn và tương thích ngược: trên các phiên bản WordPress cũ hơn 6.9, tích hợp này sẽ không làm gì cả
  • Thay đổi: việc dựng phản hồi REST nội bộ cho /post/{id} và /product/{id} được tái cấu trúc thành các hàm dùng chung, tái sử dụng được để endpoint REST và ability Abilities API mới dùng chính xác cùng logic dựng dữ liệu — không thay đổi hành vi, cấu trúc phản hồi giống như trước
  • Thay đổi: Requires at least được nâng từ 5.5 lên 6.9 để hỗ trợ tích hợp Abilities API. Requires PHP vẫn giữ nguyên 7.4
  • Đã kiểm tra đến: 7.1

1.7 – 20 tháng 7, 2026

  • Sửa thẻ nhúng bị cũ: phản hồi REST không còn dùng lưu đệm immutable; đã thêm ETag + modified_at (dựa trên thời gian sửa đổi cuối của bài viết/sản phẩm) để trình duyệt/CDN xác thực lại thay vì phục vụ dữ liệu cũ hàng năm sau khi bài viết được chỉnh sửa
  • Thêm tải chậm cho thẻ nhúng qua IntersectionObserver: thẻ chỉ lấy dữ liệu khi cuộn gần đến khung nhìn
  • Thêm API công khai scan() (IEP_Embed.scan() cho bài viết, IEP_EmbedProduct.scan() cho sản phẩm) cùng hỗ trợ MutationObserver tự động, để các mục nhúng được chèn động sau khi tải trang (AJAX/SPA) được nhận diện
  • Escape tiêu đề, đoạn trích, tên site, và các trường động khác trước khi hiển thị để ngăn chèn HTML/script vào thẻ nhúng
  • Thêm biểu tượng giữ chỗ cho sản phẩm nhúng khi không có ảnh thu nhỏ, thay vì ảnh bị hỏng
  • Thêm hiển thị khoảng giá (ví dụ “100.000₫ – 150.000₫”) cho sản phẩm biến thể WooCommerce với price_min/price_max trong phản hồi REST
  • Thêm cài đặt mới: giới hạn ảnh thư viện (1–10), thay thế giới hạn 5 viết cứng trước đây
  • Thêm cài đặt mới: theme nhúng mặc định, được chọn sẵn trong modal tạo mã nhúng (window.InitPluginSuiteEmbedPostsConfig.theme vẫn được ưu tiên cao nhất khi được theme/site thiết lập, chuyển về cài đặt này, rồi mới đến light)

1.6 – 23 tháng 12, 2025

  • Ngăn kết quả xuất InitEmbedPostsSettings bị trùng lặp khi shortcode được hiển thị nhiều lần trên cùng trang
  • Đảm bảo script giao diện nhúng và cài đặt bản địa hóa chỉ được tải một lần cho mỗi yêu cầu
  • Cải thiện độ ổn định hiển thị shortcode khi được tự động chèn ở nhiều vị trí
  • Tối ưu nội bộ nhỏ để giảm xử lý dư thừa khi hiển thị nội dung

1.5 – 14 tháng 11, 2025

  • Cải thiện logic trích xuất ảnh trong phản hồi REST để hình ảnh nhúng nhất quán hơn
  • Tăng cường init_plugin_suite_embed_posts_extract_images() với làm sạch URL, kiểm tra trùng lặp, và xử lý an toàn hơn cho nguồn không hợp lệ
  • Đảm bảo thẻ nhúng luôn trả về URL ảnh sạch, hợp lệ và tuân theo giới hạn đã yêu cầu
  • Tinh chỉnh hiệu năng REST nhỏ và tăng cường độ bền nội bộ
  • Dọn dẹp mã để dễ bảo trì lâu dài hơn

1.4 – 22 tháng 8, 2025

  • Thêm filter init_embed_posts_shortcode_html để tùy chỉnh HTML nút shortcode
  • Cho phép lập trình viên ghi đè hoàn toàn mã đánh dấu và kiểu dáng của nút nhúng
  • Cải thiện khả năng mở rộng cho lập trình viên theme và plugin

1.3 – 9 tháng 7, 2025

  • Tái cấu trúc modal nhúng: giờ được dựng hoàn toàn bằng JavaScript, không dùng mẫu PHP
  • Thêm hai tùy chọn bật/tắt mới trong modal: “Hiện meta bài viết” và “Hiện đánh giá”
  • Meta bài viết giờ hiển thị thời gian xuất bản, lượt xem, và số bình luận kèm biểu tượng
  • Hỗ trợ đánh giá: hiển thị xếp hạng 5 sao và điểm trung bình nếu Init Review System đang hoạt động
  • Tăng cường REST API:
    • Thêm dữ liệu comment_count, view_count, và review
    • Hỗ trợ nhiều plugin đếm lượt xem (Jetpack, WP-PostViews, WP Statistics, Post Views Counter)
    • Cho phép trường lượt xem tùy chỉnh qua filter init_plugin_suite_embed_posts_view_count_keys
  • published_at giờ trả về khoảng thời gian dễ đọc (ví dụ 2 ngày) thay vì định dạng ISO
  • Điều chỉnh giao diện nhỏ và bố cục thẻ gọn gàng hơn

1.2 – 30 tháng 6, 2025

  • Thêm uninstall.php để dọn dẹp cài đặt khi gỡ cài đặt
  • Đổi theme mặc định từ auto thành light để tương thích tốt hơn

1.1 – 14 tháng 6, 2025

  • Thêm hỗ trợ nhúng sản phẩm WooCommerce
  • Endpoint REST mới: /product/{id}
  • Nhúng sản phẩm hỗ trợ ảnh đại diện, giá, giá khuyến mãi (kèm gạch ngang), và chế độ tối
  • Tự động chèn nút nhúng sau meta sản phẩm (nếu được bật)
  • Mã nhúng giờ bao gồm data-type để chuyển đổi logic JS
  • Script nhúng mới: init-embed-product.js
  • Đã dọn dẹp kiểu dáng giao diện và sửa các trường hợp biên

1.0 – 9 tháng 6, 2025

  • Phát hành lần đầu
  • Nhúng bất kỳ bài viết nào với thẻ responsive
  • Giao diện modal để tạo mã nhúng
  • REST API với header thân thiện với bộ nhớ đệm
  • Vanilla JS – nhẹ và không phụ thuộc
  • Hoạt động ở mọi nơi, không cần iframe/oEmbed