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-datacho dữ liệu nhúng bài viết/sản phẩm, có thể phát hiện quawp_get_abilities()và REST namespacewp-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.jscho bài viếtinit-embed-product.jscho 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 themedata-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-datacho 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 PHPvẫ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ộtidvàtype(posthoặcproduct) 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ụ quawp_add_inline_scripttrong 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.
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
- Cài đặt và kích hoạt plugin này.
- 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”. - Nhấp nút cấu hình mục nhúng của bạn sao chép mã.
- 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.
-
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á
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ý quablock.json(với tệp PHPrender.phpkế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ụngwp.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ụcinit-embed-posts— trả về cùng dữ liệu nhúng như các endpoint REST cho mộtidbà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 namespacewp-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 PHPvẫ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êmETag+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ợMutationObservertự độ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_maxtrong 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.themevẫ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 đếnlight)
1.6 – 23 tháng 12, 2025
- Ngăn kết quả xuất
InitEmbedPostsSettingsbị 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
- Thêm dữ liệu
published_atgiờ 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ừ
autothànhlightđể 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




