Gutenberg 23.8 và 23.9: Developer Cần Chuẩn Bị Gì Cho WordPress 7.2 Tháng 12

Câu trả lời nhanh
Gutenberg 23.8 và 23.9 không có nhiều API mới nhưng lại có các thay đổi bắt buộc developer phải migrate: phím tắt block variation chuyển sang API khai báo, inner block template chuyển sang block type settings vì real-time collaboration, DataViews bỏ hết private API, và theme.json schema cho responsive states được sửa chuẩn. WordPress 7.2 sẽ ra 8-10/12/2026, tốt nhất là sửa code ngay từ bây giờ.

Tháng 9/2026 là tháng khá “im ắng” của WordPress sau bản 7.1 “Mary Lou” ra mắt ngày 19/8. Nhưng với anh em làm plugin, theme thì đừng chủ quan: hai bản Gutenberg 23.8 và 23.9 vừa mang đến một loạt thay đổi mà nếu bỏ qua, code của bạn có thể hỏng ngay khi WordPress 7.2 phát hành tháng 12 tới. Mình đã đọc kỹ bản round-up chính thức trên WordPress Developer Blog của Justin Tadlock (đăng ngày 10/9), và trong bài này mình sẽ tóm lại những gì anh em developer cần làm ngay, kèm code cụ thể.

Gutenberg 23.8 và 23.9 có gì đáng chú ý?

Gutenberg 23.8 và 23.9 - chuẩn bị cho WordPress 7.2
Gutenberg 23.8 và 23.9 – chuẩn bị cho WordPress 7.2

Đây là hai bản “trả nợ kỹ thuật” chứ không nhiều API hào nhoáng. Điểm nhấn gồm: API khai báo phím tắt cho block variation và transform, template inner block chuyển sang block type settings, theme.json schema cho responsive states được sửa lại cho chuẩn, và gói @wordpress/dataviews loại bỏ hoàn toàn private API. Kèm theo đó là lịch WordPress 7.2: Beta 1 dự kiến 20-22/10/2026, bản chính thức ra khoảng 8-10/12/2026. Nếu bạn từng đọc bài Field Guide WordPress 7.1 của mình, đây chính là vòng lặp tiếp theo.

Phím tắt cho block variation khai báo như thế nào?

Từ Gutenberg 23.9, phím tắt không còn hardcode trong private component nữa mà trở thành API khai báo được. Variation dùng thuộc tính shortcut (số ít), transform dùng mảng shortcuts (số nhiều) kèm variationName tùy chọn. Cách này giúp một transform mang sáu phím tắt mà không lặp sáu lần trong block switcher. Đây là thay đổi nhỏ nhưng rất đáng giá nếu plugin của bạn có nhiều biến thể block.

Ví dụ đăng ký variation Heading 2 kèm phím tắt Alt+Shift+2:

wp.blocks.registerBlockVariation( 'core/heading', {
	name: 'h2',
	title: 'Heading 2',
	attributes: { level: 2 },
	isActive: ( blockAttributes ) => blockAttributes.level === 2,
	shortcut: {
		name: 'core/block-editor/transform-to-heading-2',
		description: __( 'Transform the selected block into a heading 2.' ),
		keyCombination: { modifier: 'access', character: '2' },
	},
} );

Vì sao phải chuyển inner block template sang block settings?

Vì real-time collaboration. Cách cũ truyền template qua props của <InnerBlocks> chỉ áp dụng sau khi block mount, trên từng client kết nối. Hệ quả: nếu ba người cùng cộng tác và một người chèn block List có template ba item, tài liệu sinh ra ba item trùng lặp. Từ Gutenberg 23.8, template chuyển thành block type settings nên block và template ghi vào store trong một thao tác duy nhất. Khoảng hai mươi block core đã chuyển xong, props cũ vẫn chạy nhưng đã deprecated.

registerBlockType( 'my/block', {
	template: [ [ 'core/list-item' ] ],
	templateInsertUpdatesSelection: true,
	// ...
} );

Lời khuyên của mình: sửa ngay trong chu kỳ release này, đừng đợi tới 7.2. Thói quen migrate sớm từng giúp mình tránh không ít đêm fixing gấp, giống như lần chuẩn bị checklist nâng cấp WordPress 7.1 trước đây.

theme.json schema cho responsive states sửa những gì?

Ba lỗi cụ thể đã được vá trong Gutenberg 23.8. Thứ nhất, style variation giờ nhận đúng responsive states. Thứ hai, responsive states gắn với block thay vì elements — trước đó schema ghi nhầm. Thứ ba, một số false positive khi validate pseudo-class styling biến mất. Nếu bạn từng mở theme.json trong VS Code và thấy states bị gạch đỏ dù code đúng, bản Gutenberg này giải quyết luôn. Anh em làm theme nên cập nhật extension schema mới để VS Code hết báo lỗi giả.

DataViews bỏ private API ảnh hưởng plugin của bạn ra sao?

Nếu bạn bundle gói @wordpress/dataviews vào plugin, gần như chắc chắn bạn từng gặp lỗi “Cannot unlock an object that was not locked before”. Nguyên nhân là hai bản sao @wordpress/private-apis trong cùng runtime không unlock được object của nhau. Gutenberg 23.9 đã loại bỏ private-apis khỏi gói dataviews hoàn toàn. Phần thưởng kèm theo: các component trước nay nằm sau “tường” private giờ có nơi công khai — Calendar và RangeCalendar chuyển sang @wordpress/ui, withIgnoreIMEEvents nằm trong @wordpress/keycodes, ValidatedInputControl cũng public luôn.

Các thay đổi nhỏ nhưng nên biết?

Có năm điểm mình thấy thực tế. Một, cờ autoRegister có mặt trong schema block.json, nghĩa là autocomplete và validation hoạt động cho PHP-only block registration. Hai, hàm _wp_to_kebab_case() của core được đóng gói thành @wordpress/kebab-case, chạy JS ra kết quả y hệt PHP. Ba, editor dùng đúng admin color scheme, và getAdminThemeColors() export công khai từ @wordpress/admin-ui để admin screen của bạn khớp màu người dùng chỉ bằng hai dòng wrap. Bốn, DataViews thêm field type time lưu định dạng HH:mm hoặc HH:mm:ss, hợp cho giờ mở cửa, slot đặt lịch. Năm, Site Editor v2 (gói Boot) đã có khoảng hai mươi PR merge, và contributing guideline giờ yêu cầu tính năng Site Editor phải land vào bản extensible — nếu bạn extend Site Editor thì hãy theo dõi issue 79895 trên GitHub.

kebabCase( 'white2white' ); // 'white-2-white'
kebabCase( 'font2xl' );     // 'font-2-xl'
kebabCase( 'white4th' );    // 'white-4th'

Code Reference chạy được code thật ngay trên trình duyệt?

Đúng vậy, và đây là tính năng mình thích nhất tháng này. Trang Code Reference của WordPress giờ nhúng nút Run: ví dụ mẫu trong DocBlock sẽ chạy trực tiếp trên một bản WordPress thật được cấp phát bằng Playground, ngay trong tab. Dev chỉ cần viết ví dụ trong DocBlock bằng code fence php interactive là ví dụ đó và hàm được tài liệu hóa sống chung một file. Với ai học API mới như WP_HTML_Processor, đây là cách thử nhanh nhất không cần cài môi trường.

Chuẩn bị cho WordPress 7.2 cần làm gì từ bây giờ?

Mình đề xuất ba việc theo thứ tự ưu tiên. Thứ nhất, rà lại mọi block dùng props template của InnerBlocks và chuyển sang block type settings — đây là mục deprecated rõ ràng nhất. Thứ hai, nếu plugin bundle dataviews hay private-apis, cân nhắc bump dependency lên bản mới để hết xung đột unlock. Thứ ba, dành 30 phút mở một Playground instance chạy WordPress beta cộng Gutenberg mới nhất, smoke test plugin và theme của bạn — không cần cài đặt gì cả. Lịch cụ thể: Beta 1 rơi vào 20-22/10, release 8-10/12. Hai tháng preparation thoải mái nếu bắt đầu ngay hôm nay, và kinh nghiệm của mình là bắt đầu sớm luôn rẻ hơn sửa muộn.

Thanh Tùng

Mình là Thanh Tùng. Bạn bè gọi mình là "bác sĩ máy tính" vì hễ máy nào có vấn đề là mình muốn mò vào xem sao. Mình viết hướng dẫn theo cách mà mình mong người khác đã viết cho mình ngày xưa — từng bước rõ ràng, không bỏ sót, và nói luôn cái gì hay bị lỗi. Ngoài giờ làm mình chơi guitar, nuôi mèo, và có một con VPS riêng dành riêng cho việc cài thử đủ thứ linh tinh.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *