Với sự ra mắt của Block Bindings API, WordPress đã tiến một bước lớn trong việc biến Gutenberg trở thành một hệ thống soạn thảo linh hoạt thực sự. Tính năng mới này mở ra khả năng liên kết dữ liệu động (dynamic data binding) trực tiếp với các thuộc tính trong block mà không cần viết custom block hay hack thủ công bằng PHP/JS như trước đây.
Block Bindings API là gì?
Block Bindings API cho phép bạn “ràng buộc” (bind) dữ liệu từ một nguồn bên ngoài vào thuộc tính cụ thể của block. Nói cách khác, bạn có thể kết nối dữ liệu động như custom fields, metadata, hoặc các nguồn dữ liệu bên ngoài vào bất kỳ block nào – một cách linh hoạt và không xâm phạm đến cấu trúc lõi của block đó.
Vì sao Block Bindings quan trọng?
Trước đây, để hiển thị nội dung động, bạn thường phải:
- Viết block tùy chỉnh
- Inject dữ liệu thông qua render_callback
- Thao tác DOM hoặc post meta thủ công
Giờ đây, với Block Bindings API, bạn chỉ cần “liên kết” một attribute nào đó (ví dụ: nội dung đoạn văn, tiêu đề, ảnh…) với một source cụ thể, và WordPress sẽ tự xử lý phần còn lại.
Ứng dụng thực tế của Block Bindings
Dưới đây là những gì bạn có thể làm (và sắp làm được) với Block Bindings API:
- Gán nội dung block với ACF field
- Tự động đổ dữ liệu từ Custom Post Type (CPT)
- Kết nối dữ liệu từ REST API hoặc nguồn ngoài (GraphQL, WooCommerce…)
- Hiển thị thông tin động trong block core (như core/paragraph, core/image, core/heading…)
Cách hoạt động: Kiến trúc tổng quan
1.
Data Source
Là nơi cung cấp dữ liệu: post meta, options, API ngoài…
2.
Binding Target
Là attribute trong block mà bạn muốn liên kết (ví dụ: content, url, alt, headingLevel…)
3.
Binding Registration
Bạn đăng ký nguồn dữ liệu (source) và định nghĩa cách lấy dữ liệu cho từng target.
Ví dụ minh hoạ: Binding nội dung đoạn văn với post meta
Trong
block.json:
{
"name": "core/paragraph",
"attributes": {
"content": {
"type": "string",
"source": "html",
"selector": "p",
"binding": "core/post-meta"
}
}
}
Đăng ký binding source bằng JS:
import { registerBindingSource } from '@wordpress/block-bindings';
registerBindingSource( 'core/post-meta', {
getValue: ( { sourceArgs } ) => {
return wp.data.select( 'core/editor' ).getEditedPostAttribute( 'meta' )[ sourceArgs.key ];
},
} );
Giờ đây, bạn có thể vào Gutenberg → chọn block Paragraph → chọn “Bind with: post meta → field: subtitle”, và dữ liệu sẽ tự động đồng bộ.
Tích hợp với UI: Block Bindings Sidebar
WordPress đang thử nghiệm giao diện trực quan cho việc bind:
- Giao diện chọn nguồn (source)
- Tự động hiển thị key từ custom field/meta
- Có thể xem trước dữ liệu và chỉnh sửa nếu cần
Điều này giúp người dùng cuối (non-tech) có thể thao tác mà không cần code.
Khả năng mở rộng trong tương lai
Mặc dù hiện tại Block Bindings API vẫn đang trong giai đoạn phát triển (dự kiến tích hợp đầy đủ trong WordPress 6.5+), nhưng roadmap của nó rất hứa hẹn:
- Hỗ trợ binding với bất kỳ attribute nào (không chỉ content)
- Giao diện kéo-thả binding trong block editor
- Kết hợp với ACF, JetEngine, MetaBox, WooCommerce… thông qua bridge hoặc integration
- Có thể dùng trong FSE (Full Site Editing): bind data cho header, footer, template part…
Block Bindings vs Block Variations vs Dynamic Block
| Công nghệ | Mục đích chính |
|---|---|
| Block Variations | Tạo các biến thể block khác nhau với preset riêng |
| Dynamic Block | Render nội dung động thông qua PHP (server-side) |
| Block Bindings | Kết nối dữ liệu động vào attribute block cụ thể |
=> Block Bindings có thể kết hợp với cả hai công nghệ còn lại để tạo ra block mạnh mẽ, linh hoạt và dễ bảo trì.
Tình trạng hiện tại (tháng 6/2025)
- Có sẵn trong Gutenberg plugin (phiên bản mới nhất)
- Chưa chính thức trong core WordPress (sẽ sớm được tích hợp)
- Chưa có UI hoàn chỉnh, nhưng có thể dùng qua hook/code
- Có thể thử nghiệm qua plugin block-bindings-plugin của nhóm phát triển WordPress
Kết luận: Đây chính là tương lai
Block Bindings API là bước tiến lớn trong hành trình biến Gutenberg thành một page builder thuần WordPress mạnh mẽ và giàu tính tùy biến. Nó không chỉ giúp developer tiết kiệm thời gian viết block phức tạp mà còn mở ra trải nghiệm động hóa nội dung cho người dùng cuối.
Nếu bạn đang xây dựng plugin, theme hoặc site có nhu cầu hiển thị nội dung động – đã đến lúc làm quen với Block Bindings API.