fix(gutenberg): 修复 MediaUpload 未定义与无效块分类
声明 MediaUpload、服务端注册 aksrt-blocks 分类、默认 apiVersion 3,避免编辑器脚本中断与 WP 6.9 弃用警告。
This commit is contained in:
1 parent
b7dc3d170d
commit
a4cd5276e2
2 files changed
+66
-21
No files matched your search
@@ -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',
|
||||
|
||||
Reference in new issue
Block a user