fix(gutenberg): 修复 MediaUpload 未定义与无效块分类

声明 MediaUpload、服务端注册 aksrt-blocks 分类、默认 apiVersion 3,避免编辑器脚本中断与 WP 6.9 弃用警告。
This commit is contained in:
kate522 committed 2026-07-12 14:54:25 +08:00
1 parent b7dc3d170d
commit a4cd5276e2
2 files changed
+66 -21

No files matched your search

+36 -20
View File
@@ -16,10 +16,12 @@
var el = wp.element.createElement;
var Fragment = wp.element.Fragment;
var registerBlockType = wp.blocks.registerBlockType;
var InspectorControls = wp.blockEditor ? wp.blockEditor.InspectorControls : (wp.editor ? wp.editor.InspectorControls : null);
var InnerBlocks = wp.blockEditor ? wp.blockEditor.InnerBlocks : (wp.editor ? wp.editor.InnerBlocks : null);
var RichText = wp.blockEditor ? wp.blockEditor.RichText : (wp.editor ? wp.editor.RichText : null);
var registerBlockTypeRaw = wp.blocks.registerBlockType;
var blockEditor = wp.blockEditor || wp.editor || {};
var InspectorControls = blockEditor.InspectorControls || null;
var InnerBlocks = blockEditor.InnerBlocks || null;
var RichText = blockEditor.RichText || null;
var MediaUpload = blockEditor.MediaUpload || null;
var ColorPicker = wp.components.ColorPicker;
var PanelBody = wp.components.PanelBody;
var SelectControl = wp.components.SelectControl;
@@ -27,7 +29,7 @@
var ToggleControl = wp.components.ToggleControl;
var RangeControl = wp.components.RangeControl;
if (!registerBlockType || !el) return;
if (!registerBlockTypeRaw || !el) return;
// ── Helper: create element shorthand ──
function h(tag, props, children) {
@@ -55,6 +57,33 @@
h('path', { d: 'M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5', fill: 'none', stroke: 'currentColor', strokeWidth: 2 })
);
// Register category BEFORE any registerBlockType (filter-after-register is too late).
if (window.wp.hooks && window.wp.hooks.addFilter) {
wp.hooks.addFilter('blocks.getBlockCategories', 'aksrt/block-categories', function (categories) {
var list = Array.isArray(categories) ? categories.slice() : [];
var hasAksrt = list.some(function (c) { return c && c.slug === CATEGORY; });
if (hasAksrt) return list;
list.push({
slug: CATEGORY,
title: 'AKSRT',
icon: null,
});
return list;
});
}
// WP 6.9+ expects apiVersion 3 for iframe editor compatibility.
function registerBlockType(name, settings) {
settings = settings || {};
if (settings.apiVersion == null) {
settings.apiVersion = 3;
}
if (!settings.category) {
settings.category = CATEGORY;
}
return registerBlockTypeRaw(name, settings);
}
// ================================================================
// 1. Tabs Block
// ================================================================
@@ -627,22 +656,9 @@
},
});
// ── Register block category ──
if (window.wp.hooks && window.wp.hooks.addFilter) {
wp.hooks.addFilter('blocks.getBlockCategories', 'aksrt/block-categories', function (categories) {
var hasAksrt = categories.some(function (c) { return c.slug === CATEGORY; });
if (hasAksrt) return categories;
return categories.concat([{
slug: CATEGORY,
title: 'AKSRT',
icon: BLOCK_ICON,
}]);
});
}
// ── Carousel Block (Gallery → Swiper) ──
if (MediaUpload && InnerBlocks) {
// MediaUpload lives on wp.blockEditor; skip registration if unavailable.
if (MediaUpload) {
registerBlockType('aksrt/carousel', {
title: '轮播图',
icon: 'images-alt2',