该模块使用了 @wordpress/block-editor 包中的组件。基于对 WordPress 文章概念的了解,它将代表文章的块值的加载和保存机制与文章及其内容关联起来。它还提供了在编辑器上下文中处理文章对象的各种相关组件(例如,文章标题输入组件)。此包可以支持编辑任何文章类型的文章,并不假设渲染发生在任何特定的 WordPress 屏幕或布局安排中。
安装
安装模块
npm install @wordpress/editor --save
本包假设您的代码将在 ES2015+ 环境中运行。如果您使用的环境有限制或不支持此类语言特性和 API,您应该在代码中包含 @wordpress/babel-preset-default 随附的 polyfill。
工作原理
涉及编辑器的逻辑流程包括:推断文章内容的块表示(解析);描述文章的状态(表示);将文章渲染到 DOM(渲染);附加用于操作内容即块的控件(UI)。
编辑器元素的目标是让用户以确定性方式操纵其文章的内容——通过内容块的组织来实现。通常,在声明式流程中,组成文章的各个部分会以特定顺序表示,机器能够从中生成具有必要 UI 控件的输出视图。然而,我们在 WordPress 中开始的地方并不是一个有利于这种表达的文章状态表示,甚至没有任何关于块的知识,因为内容是以序列化方式存储在单个字段中的。
这样一个关键步骤由语法解析处理,它获取文章的序列化内容并使用 HTML 注释中存在的语法提示(如果可能)推断出一个有序的块列表。编辑器使用由解析原始文章内容生成的块节点的状态表示进行初始化:wp.blocks.parse( post.content.raw )。
因此,可视化编辑器是一个包含并将内部状态中的块节点列表渲染到页面中的组件。这消除了在处理查找块和操作块时的任何命令式处理的痕迹。事实上,可视化编辑器或文本编辑器只是同一状态表示的两个不同但同样有效的视图。随着块的更新,文章内容的内部表示也会更新,并重新序列化以保存在 post_content 中。
单独的块由 VisualBlock 组件处理,该组件附加事件处理器并将块定义的 edit 函数以及相应的属性和本地状态渲染到文档中。edit 函数是组件在编辑模式下的标记形状。
组件
由于许多块共享相同的复杂行为,提供了可复用的组件以简化您的块 edit 函数的实现。
BlockControls
当从您的块的 edit 实现返回时,渲染一个图标按钮工具栏。这对于在块被选中时提供块级别的修改非常有用。例如,如果您的块支持对齐,您可能希望在选中块的工具栏中显示对齐选项。
示例:
( function ( editor, React ) {
var el = React.createElement,
BlockControls = editor.BlockControls,
AlignmentToolbar = editor.AlignmentToolbar;
function edit( props ) {
return [
// Controls: (only visible when block is selected)
el(
BlockControls,
{ key: 'controls' },
el( AlignmentToolbar, {
value: props.align,
onChange: function ( nextAlign ) {
props.setAttributes( { align: nextAlign } );
},
} )
),
// Block content: (with alignment as attribute)
el(
'p',
{ key: 'text', style: { textAlign: props.align } },
'Hello World!'
),
];
}
} )( window.wp.editor, window.React );
请注意,在此示例中,我们将 AlignmentToolbar 渲染为 BlockControls 元素的子元素。这是您可以用来简化块文本对齐的另一个预配置组件。
或者,您可以通过向 BlockControls 组件传递 controls 数组来创建自己的工具栏控件。每个控件应是一个具有以下属性的对象:
icon: string– 要在控件的工具栏按钮中显示的 Dashicon 的 Slugtitle: string– 要作为控件按钮的工具提示标签显示的人类可读本地化文本subscript: ?string– 可选文本,作为下标显示在按钮图标旁边(例如,标题级别)isActive: ?boolean– 是否应将控件视为活动/选中状态。默认为false。
要在同一个 BlockControls 元素中的控件组之间创建分隔符,请将 controls 作为嵌套数组(对象的数组的数组)传递。每组控件之间将显示一个分隔符。
RichText
渲染一个丰富的 contenteditable 输入,为用户提供添加内容强调或链接的选项。它的行为类似于 受控组件,除了 onChange 触发的频率低于传统 input 字段的预期,通常在用户离开字段时触发。
提供以下属性(非详尽列表):
value: string– 字段的标记值。仅允许有效的标记,由inline值和可用控件确定。onChange: Function– 当字段值更改时的回调处理程序,将新值作为其唯一参数传递。placeholder: string– 当字段值为空时向用户显示的文本提示,类似于同名input和textarea属性。
示例:
( function ( editor, React ) {
var el = React.createElement,
RichText = editor.RichText;
function edit( props ) {
function onChange( value ) {
props.setAttributes( { text: value } );
}
return el( RichText, {
value: props.attributes.text,
onChange: onChange,
} );
}
// blocks.registerBlockType( ..., { edit: edit, ... } );
} )( window.wp.editor, window.React );
API
AlignmentToolbar
自 5.3 起已弃用,请改用
wp.blockEditor.AlignmentToolbar。
Autocomplete
自 5.3 起已弃用,请改用
wp.blockEditor.Autocomplete。
AutosaveMonitor
监控对编辑文章的更改并在必要时触发自动保存。
每 interval 秒检查一次文章,当有内容需要保存时自动保存。
用法
<AutosaveMonitor interval={ 30 } />
参数
- props
Object: 组件属性。 - props.interval
[number]: 检查之间的时间(秒)。默认为编辑器的autosaveInterval设置。 - props.autosave
[Function]: 需要在保存更改时调用的函数。默认为编辑器存储的autosave操作。
BlockAlignmentToolbar
自 5.3 起已弃用,请改用
wp.blockEditor.BlockAlignmentToolbar。
BlockControls
自 5.3 起已弃用,请改用
wp.blockEditor.BlockControls。
BlockEdit
自 5.3 起已弃用,请改用
wp.blockEditor.BlockEdit。
BlockEditorKeyboardShortcuts
自 5.3 起已弃用,请改用
wp.blockEditor.BlockEditorKeyboardShortcuts。
BlockFormatControls
自 5.3 起已弃用,请改用
wp.blockEditor.BlockFormatControls。
BlockIcon
自 5.3 起已弃用,请改用
wp.blockEditor.BlockIcon。
BlockInspector
自 5.3 起已弃用,请改用
wp.blockEditor.BlockInspector。
BlockList
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockList。
BlockMover
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockMover。
BlockNavigationDropdown
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockNavigationDropdown。
BlockSelectionClearer
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockSelectionClearer。
BlockSettingsMenu
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockSettingsMenu。
BlockTitle
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockTitle。
BlockToolbar
自 5.3 版本起已弃用,请改用
wp.blockEditor.BlockToolbar。
CharacterCount
渲染文章内容的字符计数。
返回
number: 字符数量。
cleanForSlug
对字符串进行基本清理,以便用作文章别名(slug)。
此函数复现了 WordPress 核心中 sanitize_title() 的部分功能,但仅旨在近似生成别名。
将 Latin-1 Supplement 和 Latin Extended-A 字母转换为基本拉丁字母。移除组合变音符号。将空格、句点和正斜杠转换为连字符。移除任何剩余的非常规字符,连字符和下划线除外。将剩余字符串转换为小写。它不处理八位字节、HTML 实体或其他编码字符。
参数
- string
string: 要处理的标题或别名。
返回
string: 处理后的字符串。
ColorPalette
自 5.3 版本起已弃用,请改用
wp.blockEditor.ColorPalette。
ContrastChecker
自 5.3 版本起已弃用,请改用
wp.blockEditor.ContrastChecker。
CopyHandler
自 5.3 版本起已弃用,请改用
wp.blockEditor.CopyHandler。
createCustomColorsHOC
自 5.3 版本起已弃用,请改用
wp.blockEditor.createCustomColorsHOC。
DefaultBlockAppender
自 5.3 版本起已弃用,请改用
wp.blockEditor.DefaultBlockAppender。
DocumentBar
此组件在编辑器顶部渲染一个导航栏。它显示当前文档的标题、后退按钮(如果适用)以及命令中心按钮。它还处理文档的不同状态,例如“未找到”或“不同步”。
用法
<DocumentBar />
参数
- props
Object: 组件属性。 - props.title
string: 文档的标题,默认为当前正在编辑的文档或模板标题。 - props.icon
IconType: 文档的图标,无默认值。(不再使用指示文档文章类型的默认图标。)
返回
React.ReactNode: 渲染后的 DocumentBar 组件。
DocumentOutline
渲染文档大纲组件。
参数
- props
Object: 属性。 - props.onSelect
Function: 选中大纲项时调用的函数。 - props.hasOutlineItemsDisabled
boolean: 指示大纲项是否被禁用。
返回
React.ReactNode: 渲染后的组件。
DocumentOutlineCheck
检查文档中是否存在任何标题(core/heading 块)的组件。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 要渲染的子元素。
返回
React.ReactNode: 要渲染的组件,或者如果存在标题则返回 null。
EditorHistoryRedo
渲染编辑器历史记录的重做按钮。
参数
- props
Object: – 属性。 - ref
Ref: – 转发的 ref。
返回
React.ReactNode: 渲染后的组件。
EditorHistoryUndo
渲染编辑器历史记录的回退按钮。
参数
- props
Object: – 属性。 - ref
Ref: – 转发的 ref。
返回
React.ReactNode: 渲染后的组件。
EditorKeyboardShortcuts
处理编辑器的键盘快捷键。
它提供了各种键盘快捷键的功能,例如切换编辑器模式、切换专注模式、撤销/重做、保存文章、切换列表视图和切换侧边栏。
EditorKeyboardShortcutsRegister
用于注册编辑器键盘快捷键的组件。
返回
Element: 要渲染的组件。
EditorNotices
自 7.0 版本起已弃用,请改用
wp.notices.InlineNotices。
EditorProvider
此组件建立新的文章编辑上下文,并作为新文章编辑器(或带有模板编辑器的文章)的入口点。
它支持大量文章类型,包括文章、页面、模板、自定义文章类型、区块图案、模板部分。
所有修改和更改都在 @wordpress/core-data 存储中执行。
用法
<EditorProvider
post={ post }
settings={ settings }
__unstableTemplate={ template }
>
{ children }
</EditorProvider>
参数
- props
Object: 组件属性。 - props.post
[Object]: 要编辑的文章对象。这是必需的。 - props.__unstableTemplate
[Object]: 包装被编辑文章的模板对象。这是可选的,仅在文章类型支持模板时使用(如文章和页面)。 - props.settings
[Object]: 用于编辑器的设置对象。这是可选的,可用于覆盖默认设置。 - props.children
[React.ReactNode]: 应用 BlockEditorProvider 上下文的子元素。这是可选的。
返回
React.ReactNode: 渲染后的 EditorProvider 组件。
EditorSnackbars
自 7.0 版本起已弃用,请改用
wp.notices.SnackbarNotices。
EntitiesSavedStates
未记录的声明。
ErrorBoundary
ErrorBoundary 用于捕获子组件树中任何位置的 JavaScript 错误,记录这些错误并显示备用用户界面。
它使用生命周期方法 getDerivedStateFromError 和 componentDidCatch 来捕获子组件树中的错误。
getDerivedStateFromError 用于在抛出错误后渲染备用 UI,而 componentDidCatch 用于记录错误信息。
FontSizePicker
自 5.3 版本起已弃用,请改用
wp.blockEditor.FontSizePicker。
getColorClassName
自 5.3 版本起已弃用,请改用
wp.blockEditor.getColorClassName。
getColorObjectByAttributeValues
自 5.3 版本起已弃用,请改用
wp.blockEditor.getColorObjectByAttributeValues。
getColorObjectByColorValue
自 5.3 版本起已弃用,请改用
wp.blockEditor.getColorObjectByColorValue。
getFontSize
自 5.3 版本起已弃用,请改用
wp.blockEditor.getFontSize。
getFontSizeClass
自 5.3 版本起已弃用,请改用
wp.blockEditor.getFontSizeClass。
InnerBlocks
自 5.3 版本起已弃用,请改用
wp.blockEditor.InnerBlocks。
Inserter
自 5.3 版本起已弃用,请改用
wp.blockEditor.Inserter。
InspectorAdvancedControls
自 5.3 版本起已弃用,请改用
wp.blockEditor.InspectorAdvancedControls。
InspectorControls
自 5.3 版本起已弃用,请改用
wp.blockEditor.InspectorControls。
linkAutocompleter
用于文章和页面的链接自动完成器。
类型
Object
LocalAutosaveMonitor
监控编辑器中文档的本地自动保存。它使用多个钩子和函数来管理自动保存行为:
useAutosaveNotice钩子:管理创建通知,提示用户恢复本地自动保存(如果存在)。useAutosavePurge钩子:在成功保存后清除本地自动保存内容。hasSessionStorageSupport函数:检查当前环境是否支持浏览器的 sessionStorage。LocalAutosaveMonitor组件:使用AutosaveMonitor组件以指定间隔执行自动保存。
该模块还会检查对 sessionStorage 的支持情况,并根据此结果有条件地导出 LocalAutosaveMonitor 组件。
MediaPlaceholder
自 5.3 版本起已弃用,请改用
wp.blockEditor.MediaPlaceholder。
MediaUpload
自 5.3 版本起已弃用,请改用
wp.blockEditor.MediaUpload。
mediaUpload
当文件上传按钮被激活时上传媒体文件。这是对 uploadMedia() 的封装,并注入了当前文章 ID。
参数
- $0
Object: 传递给函数的参数对象。 - $0.additionalData
?Object: 要包含在请求中的额外数据。 - $0.allowedTypes
string: 可上传的媒体类型数组,如果未设置则允许所有类型。 - $0.filesList
Array: 文件列表。 - $0.maxUploadFileSize
?number: 站点允许的最大上传文件大小(字节)。 - $0.onError
Function: 发生错误时调用的函数。 - $0.onFileChange
Function: 每次文件或文件的临时表示形式可用时调用的函数。 - $0.onSuccess
Function: 文件的最终表示形式可用后调用的函数。 - $0.multiple
boolean: 是否允许多个文件上传。 - $0.isTransportOnly
boolean: 调用方是否拥有上传生命周期 UX(进度跟踪和保存锁定),并且仅将此函数用作其服务器传输层。由@wordpress/upload-media队列设置,该队列会计算自己的项数以用于进度 Snackbar,并通过useUploadSaveLock锁定保存操作。
MediaUploadCheck
自 5.3 版本起已弃用,请改用
wp.blockEditor.MediaUploadCheck。
MultiSelectScrollIntoView
自 5.3 版本起已弃用,请改用
wp.blockEditor.MultiSelectScrollIntoView。
NavigableToolbar
自 5.3 版本起已弃用,请改用
wp.blockEditor.NavigableToolbar。
ObserveTyping
自 5.3 版本起已弃用,请改用
wp.blockEditor.ObserveTyping。
PageAttributesCheck
包装器组件,仅当文章类型支持页面属性时才渲染其子元素。
参数
- props
Object: – 组件属性。 - props.children
React.ReactNode: – 要渲染的子组件。
返回
React.ReactNode: 渲染的子组件,如果不支持页面属性则返回 null。
PageAttributesOrder
渲染页面属性顺序组件。编辑器界面中的一个数字输入框,用于设置给定页面的顺序。该组件现在不再在核心中使用,但为了向后兼容而保留。
返回
React.ReactNode: 渲染的组件。
PageAttributesPanel
渲染页面属性面板组件。
返回
React.ReactNode: 渲染的组件。
PageAttributesParent
渲染页面属性父级组件。编辑器界面中的一个下拉菜单,用于选择给定页面的父页面。
返回
React.ReactNode: 要渲染的组件。如果文章类型不是分层结构,则返回 null。
PageTemplate
提供一个下拉菜单,用于选择和管理文章模板。
下拉菜单包括一个切换菜单的按钮、可用模板列表以及创建和编辑模板的选项。
返回
React.ReactNode: 渲染的 ClassicThemeControl 组件。
PanelColorSettings
自 5.3 版本起已弃用,请改用
wp.blockEditor.PanelColorSettings。
PlainText
自 5.3 版本起已弃用,请改用
wp.blockEditor.PlainText。
PluginBlockSettingsMenuItem
在块设置菜单中渲染一个新项目。
用法
// Using ES5 syntax
var __ = wp.i18n.__;
var PluginBlockSettingsMenuItem = wp.editor.PluginBlockSettingsMenuItem;
function doOnClick() {
// To be called when the user clicks the menu item.
}
function MyPluginBlockSettingsMenuItem() {
return React.createElement( PluginBlockSettingsMenuItem, {
allowedBlocks: [ 'core/paragraph' ],
icon: 'dashicon-name',
label: __( 'Menu item text' ),
onClick: doOnClick,
} );
}
// Using ESNext syntax
import { __ } from '@wordpress/i18n';
import { PluginBlockSettingsMenuItem } from '@wordpress/editor';
const doOnClick = () => {
// To be called when the user clicks the menu item.
};
const MyPluginBlockSettingsMenuItem = () => (
<PluginBlockSettingsMenuItem
allowedBlocks={ [ 'core/paragraph' ] }
icon="dashicon-name"
label={ __( 'Menu item text' ) }
onClick={ doOnClick }
/>
);
参数
- props
Object: 组件属性。 - props.allowedBlocks
[Array]: 包含应显示该项目的块名称列表的数组。如果不存在,则为任何块渲染该项目。如果选择了多个块,则仅当它们都在允许列表中时才显示该项目。 - props.icon
[WPBlockTypeIconRender]: Dashicon 图标 slug 字符串,或 SVG WP 元素。 - props.label
string: 菜单项文本。 - props.onClick
Function: 用户点击菜单项时执行的回调函数。 - props.small
[boolean]: 是否渲染标签。 - props.role
[string]: 菜单项的 ARIA role。
返回
React.ReactNode: 渲染的组件。
PluginDocumentSettingPanel
在文档侧边栏的状态与可用性面板下方渲染项目。
用法
// Using ES5 syntax
var el = React.createElement;
var __ = wp.i18n.__;
var registerPlugin = wp.plugins.registerPlugin;
var PluginDocumentSettingPanel = wp.editor.PluginDocumentSettingPanel;
function MyDocumentSettingPlugin() {
return el(
PluginDocumentSettingPanel,
{
className: 'my-document-setting-plugin',
title: 'My Panel',
name: 'my-panel',
},
__( 'My Document Setting Panel' )
);
}
registerPlugin( 'my-document-setting-plugin', {
render: MyDocumentSettingPlugin,
} );
// Using ESNext syntax
import { registerPlugin } from '@wordpress/plugins';
import { PluginDocumentSettingPanel } from '@wordpress/editor';
const MyDocumentSettingTest = () => (
<PluginDocumentSettingPanel
className="my-document-setting-plugin"
title="My Panel"
name="my-panel"
>
<p>My Document Setting Panel</p>
</PluginDocumentSettingPanel>
);
registerPlugin( 'document-setting-test', { render: MyDocumentSettingTest } );
参数
- props
Object: 组件属性。 - props.name
string: 必需。面板的机器友好名称。 - props.className
[string]: 可选,添加到行的类名。 - props.title
[string]: 面板的标题 - props.icon
[WPBlockTypeIconRender]: 当侧边栏固定到工具栏时要渲染的 Dashicon 图标 slug 字符串,或 SVG WP 元素。 - props.children
React.ReactNode: 要渲染的子元素
返回
React.ReactNode: 要渲染的组件。
PluginMoreMenuItem
在“更多菜单”下拉菜单的 Plugins 组中渲染一个菜单项,可以根据提供的 props 用作按钮或链接。组件内的文本作为菜单项标签显示。
用法
// Using ES5 syntax
var __ = wp.i18n.__;
var PluginMoreMenuItem = wp.editor.PluginMoreMenuItem;
var moreIcon = wp.element.createElement( 'svg' ); //... svg element.
function onButtonClick() {
alert( 'Button clicked.' );
}
function MyButtonMoreMenuItem() {
return wp.element.createElement(
PluginMoreMenuItem,
{
icon: moreIcon,
onClick: onButtonClick,
},
__( 'My button title' )
);
}
// 使用 ESNext 语法
import { __ } from '@wordpress/i18n';
import { PluginMoreMenuItem } from '@wordpress/editor';
import { more } from '@wordpress/icons';
function onButtonClick() {
alert( 'Button clicked.' );
}
const MyButtonMoreMenuItem = () => (
<PluginMoreMenuItem icon={ more } onClick={ onButtonClick }>
{ __( 'My button title' ) }
</PluginMoreMenuItem>
);
参数
- props
Object: 组件属性。 - props.children
[React.ReactNode]: 要渲染的子元素。 - props.href
[string]: 当提供href时,菜单项将表示为锚点而非按钮。它对应于锚点的href属性。 - props.icon
[WPBlockTypeIconRender]: 要渲染在菜单项标签左侧的 Dashicon 图标 slug 字符串,或 SVG WP 元素。 - props.onClick
[Function]: 用户点击菜单项时要执行的回调函数。 - props.other
[...*]: 除已弃用且被忽略的as外,任何其他附加 props 都会透传给底层菜单项组件。
返回
React.ReactNode: 渲染后的组件。
PluginPostPublishPanel
在发布流程(用户在发布文章后打开的侧边面板)中将提供的内容渲染到发布后面板中。
用法
// 使用 ESNext 语法
import { __ } from '@wordpress/i18n';
import { PluginPostPublishPanel } from '@wordpress/editor';
const MyPluginPostPublishPanel = () => (
<PluginPostPublishPanel
className="my-plugin-post-publish-panel"
title={ __( 'My panel title' ) }
initialOpen={ true }
>
{ __( 'My panel content' ) }
</PluginPostPublishPanel>
);
参数
- props
Object: 组件属性。 - props.className
[string]: 添加到面板的可选类名。 - props.title
[string]: 显示在面板顶部的标题。 - props.initialOpen
[boolean]: 是否初始打开面板。当未提供标题时,它将始终打开。 - props.icon
[WPBlockTypeIconRender]: 当侧边栏固定到工具栏时,要渲染的 Dashicon 图标 slug 字符串,或 SVG WP 元素。 - props.children
React.ReactNode: 要渲染的子元素
返回
React.ReactNode: 渲染后的组件。
PluginPostStatusInfo
在文档侧边栏的摘要面板中渲染一行。需要注意的是,它是围绕其服务的功能来命名和实现的,而不是其位置,这在未来的迭代中可能会发生变化。
用法
// 使用 ES5 语法
var __ = wp.i18n.__;
var PluginPostStatusInfo = wp.editor.PluginPostStatusInfo;
function MyPluginPostStatusInfo() {
return React.createElement(
PluginPostStatusInfo,
{
className: 'my-plugin-post-status-info',
},
__( 'My post status info' )
);
}
// 使用 ESNext 语法
import { __ } from '@wordpress/i18n';
import { PluginPostStatusInfo } from '@wordpress/editor';
const MyPluginPostStatusInfo = () => (
<PluginPostStatusInfo className="my-plugin-post-status-info">
{ __( 'My post status info' ) }
</PluginPostStatusInfo>
);
参数
- props
Object: 组件属性。 - props.className
[string]: 添加到行的可选类名。 - props.children
React.ReactNode: 要渲染的子元素。
返回
React.ReactNode: 渲染后的组件。
PluginPrePublishPanel
在发布流程中(用户在主编辑器中首次点击“发布”时打开的侧边面板)将提供的内容渲染到发布前侧边面板中。
用法
// 使用 ESNext 语法
import { __ } from '@wordpress/i18n';
import { PluginPrePublishPanel } from '@wordpress/editor';
const MyPluginPrePublishPanel = () => (
<PluginPrePublishPanel
className="my-plugin-pre-publish-panel"
title={ __( 'My panel title' ) }
initialOpen={ true }
>
{ __( 'My panel content' ) }
</PluginPrePublishPanel>
);
参数
- props
Object: 组件属性。 - props.className
[string]: 添加到面板的可选类名。 - props.title
[string]: 显示在面板顶部的标题。 - props.initialOpen
[boolean]: 是否初始打开面板。当未提供标题时,它将始终打开。 - props.icon
[WPBlockTypeIconRender]: 当侧边栏固定到工具栏时,要渲染的 Dashicon 图标 slug 字符串,或 SVG WP 元素。如果传递false,则不会渲染图标。 - props.children
React.ReactNode: 要渲染的子元素
返回
React.ReactNode: 渲染后的组件。
PluginPreviewMenuItem
在预览下拉菜单中渲染一个菜单项,根据提供的 props 可用作按钮或链接。组件内的文本显示为菜单项标签。
用法
import { __ } from '@wordpress/i18n';
import { PluginPreviewMenuItem } from '@wordpress/editor';
import { external } from '@wordpress/icons';
function onPreviewClick() {
// 处理预览操作
}
const ExternalPreviewMenuItem = () => (
<PluginPreviewMenuItem icon={ external } onClick={ onPreviewClick }>
{ __( 'Preview in new tab' ) }
</PluginPreviewMenuItem>
);
registerPlugin( 'external-preview-menu-item', {
render: ExternalPreviewMenuItem,
} );
参数
- props
Object: 组件属性。 - props.children
[React.ReactNode]: 要渲染的子元素。 - props.href
[string]: 当提供href时,菜单项将渲染为锚点而非按钮。它对应于锚点的href属性。 - props.icon
[WPBlockTypeIconRender]: 要渲染在菜单项标签左侧的图标。可以是 Dashicon slug 或 SVG WP 元素。 - props.onClick
[Function]: 用户点击菜单项时要执行的回调函数。 - props.other
[...*]: 除已弃用且被忽略的as外,任何其他附加 props 都会透传给底层菜单项组件。
返回
React.ReactNode: 渲染后的菜单项组件。
PluginSidebar
激活时渲染侧边栏。PluginSidebar 内的内容将作为侧边栏中的内容显示。当 isPinnable 标志设置为 true 时,它还会自动渲染相应的 PluginSidebarMenuItem 组件。如果您希望显示侧边栏,可以使用 PluginSidebarMoreMenuItem 组件或 wp.data.dispatch API:
wp.data
.dispatch( 'core/edit-post' )
.openGeneralSidebar( 'plugin-name/sidebar-name' );
相关
- PluginSidebarMoreMenuItem
用法
// 使用 ES5 语法
var __ = wp.i18n.__;
var el = React.createElement;
var PanelBody = wp.components.PanelBody;
var PluginSidebar = wp.editor.PluginSidebar;
var moreIcon = React.createElement( 'svg' ); //... svg element.
function MyPluginSidebar() {
return el(
PluginSidebar,
{
name: 'my-sidebar',
title: 'My sidebar title',
icon: moreIcon,
},
el( PanelBody, {}, __( 'My sidebar content' ) )
);
}
// 使用 ESNext 语法
import { __ } from '@wordpress/i18n';
import { PanelBody } from '@wordpress/components';
import { PluginSidebar } from '@wordpress/editor';
import { more } from '@wordpress/icons';
const MyPluginSidebar = () => (
<PluginSidebar name="my-sidebar" title="My sidebar title" icon={ more }>
<PanelBody>{ __( 'My sidebar content' ) }</PanelBody>
</PluginSidebar>
);
参数
- props
Object: 元素属性。 - props.name
string: 用于标识侧边栏的字符串。在您插件范围内的每个注册的侧边栏必须是唯一的。 - props.children
[React.ReactNode]: 要渲染的子元素。 - props.className
[string]: 添加到侧边栏主体的可选类名。 - props.title
string: 显示在侧边栏顶部的标题。 - props.isPinnable
[boolean]: 是否允许将侧边栏固定到工具栏。当设置为true时,它还会自动渲染相应的菜单项。 - props.icon
[WPBlockTypeIconRender]: 当侧边栏固定到工具栏时要渲染的 Dashicon 图标缩写字符串,或 SVG WP 元素。
PluginSidebarMoreMenuItem
在 More Menu 下拉菜单的 Plugins 组中渲染一个菜单项,可用于激活相应的 PluginSidebar 组件。组件内的文本作为菜单项标签显示。
用法
// 使用 ES5 语法
var __ = wp.i18n.__;
var PluginSidebarMoreMenuItem = wp.editor.PluginSidebarMoreMenuItem;
var moreIcon = React.createElement( 'svg' ); //... svg 元素。
function MySidebarMoreMenuItem() {
return React.createElement(
PluginSidebarMoreMenuItem,
{
target: 'my-sidebar',
icon: moreIcon,
},
__( 'My sidebar title' )
);
}
// 使用 ESNext 语法
import { __ } from '@wordpress/i18n';
import { PluginSidebarMoreMenuItem } from '@wordpress/editor';
import { more } from '@wordpress/icons';
const MySidebarMoreMenuItem = () => (
<PluginSidebarMoreMenuItem target="my-sidebar" icon={ more }>
{ __( 'My sidebar title' ) }
</PluginSidebarMoreMenuItem>
);
参数
- props
Object: 组件属性。 - props.target
string: 标识目标侧边栏的字符串,该侧边栏应通过此菜单项激活。必须与您赋予该侧边栏的name属性相同。 - props.children
[React.ReactNode]: 要渲染的子节点。 - props.icon
[WPBlockTypeIconRender]: 要渲染在菜单项标签左侧的 Dashicon 图标缩写字符串,或 SVG WP 元素。
返回
React.ReactNode: 渲染后的组件。
PostAuthor
渲染用于选择文章作者的控件。
返回
React.ReactNode: 渲染后的组件。
PostAuthorCheck
包装器组件,仅当文章类型支持作者时才渲染其子元素。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 要渲染的子节点。
返回
React.ReactNode: 要渲染的组件。如果文章类型不支持作者或没有可用作者,则返回null。
PostAuthorPanel
渲染文章作者面板组件。
返回
React.ReactNode: 渲染后的组件。
PostComments
用于管理评论状态的形式。
返回
React.ReactNode: 渲染后的 PostComments 组件。
PostDiscussionPanel
此组件允许更新当前文章的评论和引用通告设置。内部会检查当前文章是否支持上述功能,以及 discussion-panel 面板是否已启用。
返回
React.ReactNode: 渲染后的 PostDiscussionPanel 组件。
PostExcerpt
渲染文章摘要的可编辑文本区域。模板、模板部分和模式在语义上使用 excerpt 字段作为描述。此外,模板和模板部分在 REST API 中将 excerpt 字段覆盖为 description。因此,此组件处理适当的标签并更新正在编辑的实体。
参数
- props
Object: – 组件属性。 - props.hideLabelFromVision
[boolean]: – 是否从视觉上隐藏文本区域的标签。 - props.updateOnBlur
[boolean]: – 是否在更改时更新文章,或使用本地状态并在失去焦点时更新。
PostExcerptCheck
用于检查文章类型是否支持摘要字段的组件。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 要渲染的子节点。
返回
React.ReactNode: 渲染后的组件。
PostExcerptPanel
如果文章类型支持摘要,则进行渲染并允许编辑摘要。
返回
React.ReactNode: 渲染后的 PostExcerptPanel 组件。
PostFeaturedImage
渲染用于管理文章特色图像的组件。
参数
- props
Object: 属性。 - props.currentPostId
number: 当前文章的 ID。 - props.featuredImageId
number: 特色图像的 ID。 - props.onUpdateImage
Function: 图像更新时要调用的函数。 - props.onRemoveImage
Function: 图像移除时要调用的函数。 - props.media
Object: 表示特色图像的媒体对象。 - props.postType
string: 文章类型。 - props.noticeUI
Element: 用于显示通知的 UI。 - props.noticeOperations
Object: 用于管理通知的操作。
返回
Element: 要渲染的组件。
PostFeaturedImageCheck
包装器组件,仅当文章类型支持特色图像且主题支持文章缩略图时才渲染其子元素。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 要渲染的子节点。
返回
React.ReactNode: 渲染后的组件。
PostFeaturedImagePanel
渲染文章特色图像的面板。
参数
- props
Object: 属性。 - props.withPanelBody
boolean: 是否包含面板主体。默认为 true。
返回
React.ReactNode: 要渲染的组件。如果特色图像的编辑器面板被禁用,则返回 Null。
PostFormat
PostFormat 是一个允许更改文章格式同时提供当前文章建议的组件。
用法
<PostFormat />
返回
React.ReactNode: 渲染后的 PostFormat 组件。
PostFormatCheck
用于检查是否存在任何文章格式的组件。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 要渲染的子元素。
返回
React.ReactNode: 渲染后的组件,如果文章格式被禁用则为 null。
PostLastRevision
渲染用于显示文章最后修订版本的组件。
返回
React.ReactNode: 渲染后的组件。
PostLastRevisionCheck
包装器组件,如果文章有多个修订版本,则渲染其子元素。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 要渲染的子节点。
返回
React.ReactNode: 如果文章有多个修订版本,则渲染子组件,否则为 null。
PostLastRevisionPanel
渲染用于显示文章最后修订版本的面板。
返回
React.ReactNode: 渲染后的组件。
PostLockedModal
当另一用户锁定文章进行编辑时显示的模态框组件。该模态框提供有关锁定状态的信息以及接管或退出编辑器的选项。
返回
React.ReactNode: 渲染后的 PostLockedModal 组件。
PostPendingStatus
用于显示和切换文章待审状态的组件。
返回
React.ReactNode: 渲染后的组件。
PostPendingStatusCheck
此组件检查当前文章的发布状态。如果文章已经发布或者用户没有发布权限,则返回 null。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 要渲染的子节点。
返回
React.ReactNode: 渲染后的子元素,如果文章已经发布或者用户没有发布权限,则为 null。
PostPingbacks
渲染用于在 WordPress 文章中启用或禁用引用通告和跟踪通告的控件。
PostPreviewButton
渲染一个按钮,该按钮在新窗口或标签页中打开预览,将此过渡消息写入该窗口,然后导航到实际的预览链接。如果文章不可查看,则不渲染该按钮;如果文章不可保存,则禁用该按钮。
参数
- props
Object: 组件属性。 - props.className
string: 按钮的类名。 - props.textContent
string: 按钮的文本内容。 - props.forceIsAutosaveable
boolean: 是否强制自动保存。 - props.role
string: 按钮的 role 属性。 - props.onPreview
Function: 预览事件的回调函数。
返回
React.ReactNode: 渲染后的按钮组件。
PostPublishButton
渲染发布按钮。
PostPublishButtonLabel
渲染发布按钮的标签。
返回
string: 发布按钮的标签。
PostPublishPanel
渲染用于发布文章的面板。
参数
- props
Object: 组件属性。 - props.forceIsDirty
[boolean]: 是否强制标记为有未保存更改。 - props.onClose
()=>void: 当面板请求关闭时调用。 - props.PostPublishExtension
[React.ComponentType]: 发布后渲染的组件。 - props.PrePublishExtension
[React.ComponentType]: 发布前渲染的组件。
返回
React.JSX.Element: 文章发布面板。
PostSavedState
显示文章是否已保存的组件,并提供保存按钮。
参数
- props
Object: 组件属性。 - props.forceIsDirty
?boolean: 是否强制将文章标记为有未保存更改。
返回
React.ComponentType: 该组件。
PostSchedule
渲染 PostSchedule 组件。它允许用户安排文章的发布时间。
参数
- props
Object: 属性。 - props.onClose
Function: 关闭组件的函数。
返回
React.ReactNode: 渲染后的组件。
PostScheduleCheck
包装器组件,仅当文章具有发布操作时才渲染其子元素。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 要渲染的子元素。
返回
React.ReactNode: – 要渲染的组件,或者如果没有发布操作则为 null。
PostScheduleLabel
渲染 PostScheduleLabel 组件。
参数
- props
Object: 属性。
返回
React.ReactNode: 渲染后的组件。
PostSchedulePanel
渲染 Post Schedule Panel 组件。
返回
React.ReactNode: 渲染后的组件。
PostSticky
渲染 PostSticky 组件。它为置顶文章功能提供复选框控件。
返回
React.ReactNode: 渲染后的组件。
PostStickyCheck
包装器组件,仅当文章具有置顶操作时才渲染其子元素。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 要渲染的子元素。
返回
React.ReactNode: 要渲染的组件,或者如果文章类型不是 ‘post’ 或 hasStickyAction 为 false 则为 null。
PostSwitchToDraftButton
渲染一个按钮组件,允许用户将文章切换为草稿状态。
返回
React.ReactNode: 渲染后的组件。
PostSyncStatus
渲染文章的同步状态。
返回
React.ReactNode: 渲染后的同步状态组件。
PostTaxonomies
渲染与文章关联的分类法。
参数
- props
Object: 组件属性。 - props.taxonomyWrapper
Function: 每个分类法组件的包装函数。
返回
Array: 表示可见分类法的 JSX 元素数组。
PostTaxonomiesCheck
仅在当前文章类型具有分类法时渲染子组件。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 要渲染的子组件。
返回
React.ReactNode: 渲染后的子组件,或者如果当前文章类型没有分类法则为 null。
PostTaxonomiesFlatTermSelector
渲染扁平术语选择器组件。
参数
- props
Object: 组件属性。 - props.slug
string: 分类法的 slug。
返回
React.ReactNode: 渲染后的扁平术语选择器组件。
PostTaxonomiesHierarchicalTermSelector
层级术语选择器。
参数
- props
Object: 组件属性。 - props.slug
string: 分类法 slug。
返回
Element: 层级术语选择器组件。
PostTaxonomiesPanel
渲染文章分类法面板的组件。
返回
React.ReactNode: 渲染后的组件。
PostTemplatePanel
根据当前编辑器设置和用户权限显示模板控件。
返回
React.ReactNode: 渲染后的 PostTemplatePanel 组件。
PostTextEditor
在视觉模式和文本模式下显示 Post Text Editor 及其内容。
返回
React.ReactNode: 渲染后的 PostTextEditor 组件。
PostTitle
渲染 PostTitle 组件。
参数
- _
Object: 未使用的参数。 - forwardedRef
Element: 转发给组件的 ref。
返回
React.ReactNode: 渲染后的 PostTitle 组件。
PostTitleRaw
未记录的声明。
PostTrash
在编辑器中显示 Post Trash Button 和确认对话框。
参数
- An
?{onActionPerformed: Object}: 包含 onActionPerformed 函数的对象。
返回
React.ReactNode: 渲染后的 PostTrash 组件。
PostTrashCheck
包装器组件,仅当文章可以被移入回收站时才渲染其子元素。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 子组件。
返回
React.ReactNode: 渲染后的子组件,或者如果文章不能被移入回收站则为 null。
PostTypeSupportCheck
一个组件,仅在当前编辑器文章类型支持给定的 supportKeys 属性之一时才渲染其自身的子元素。
参数
- props
Object: 属性。 - props.children
React.ReactNode: 如果文章类型支持则渲染的子元素。 - props.supportKeys
(string|string[]): 要测试的键字符串或字符串数组。
返回
React.ReactNode: 要渲染的组件。
PostURL
渲染 PostURL 组件。
用法
<PostURL />
参数
- props
{ onClose: () => void }: 组件的属性。 - props.onClose
() => void: 当弹出层关闭时执行的回调函数。
返回
React.ReactNode: 渲染后的 PostURL 组件。
PostURLCheck
检查文章 URL 是否有效且可见。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 子组件。
返回
React.ReactNode: 如果文章 URL 有效且可见则返回子组件,否则返回 null。
PostURLLabel
代表文章 URL 的标签组件。
返回
React.ReactNode: PostURLLabel 组件。
PostURLPanel
渲染 PostURLPanel 组件。
返回
React.ReactNode: 渲染后的 PostURLPanel 组件。
PostVisibility
允许用户设置文章的可见性。
参数
- props
Object: 组件属性。 - props.onClose
Function: 当弹出层关闭时调用的函数。
返回
React.ReactNode: 渲染后的组件。
PostVisibilityCheck
确定当前文章是否可以编辑(发布),并将此信息传递给提供的渲染函数。
参数
- props
Object: 组件属性。 - props.render
Function: 用于渲染组件的函数。接收一个包含canEdit属性的对象。
返回
React.ReactNode: 渲染后的组件。
PostVisibilityLabel
返回当前文章可见性设置的标签。
返回
string: 文章可见性标签。
privateApis
未记录的声明。
registerEntityAction
注册一个新的 DataViews 操作。
这是一个实验性 API,可能会发生变化。目前仅在 Gutenberg 插件中可用。
参数
- kind
string: 实体类型。 - name
string: 实体名称。 - config
Action: 操作配置。
registerEntityField
注册一个新的 DataViews 字段。
这是一个实验性 API,可能会发生变化。目前仅在 Gutenberg 插件中可用。
参数
- kind
string: 实体类型。 - name
string: 实体名称。 - config
Field: 字段配置。
RichText
已弃用,自 5.3 版本起,请使用
wp.blockEditor.RichText代替。
RichTextShortcut
已弃用,自 5.3 版本起,请使用
wp.blockEditor.RichTextShortcut代替。
RichTextToolbarButton
已弃用,自 5.3 版本起,请使用
wp.blockEditor.RichTextToolbarButton代替。
ServerSideRender
未记录的声明。
SkipToSelectedBlock
已弃用,自 5.3 版本起,请使用
wp.blockEditor.SkipToSelectedBlock代替。
store
编辑器命名空间的 Store 定义。
相关
storeConfig
文章编辑器数据存储配置。
相关
TableOfContents
渲染目录组件。
参数
- props
Object: 组件属性。 - props.hasOutlineItemsDisabled
boolean: 是否禁用大纲项。 - props.repositionDropdown
boolean: 是否重新定位下拉菜单。 - ref
Element.ref: 组件的 ref。
返回
React.ReactNode: 渲染后的目录组件。
TextEditorGlobalKeyboardShortcuts
处理编辑器的键盘快捷键。
它提供了各种键盘快捷键的功能,例如切换编辑器模式、切换专注模式、撤销/重做、保存文章、切换列表视图以及切换侧边栏。
ThemeSupportCheck
检查当前主题是否支持特定功能,如果支持则渲染子元素。
参数
- props
Object: 组件属性。 - props.children
React.ReactNode: 如果主题支持指定功能,则渲染的子元素。 - props.supportKeys
string|string[]: 要检查的主题支持键(或多个键)。
返回
React.ReactNode: 如果主题支持指定功能,则渲染的子元素;否则为 null。
TimeToRead
用于在内容中显示阅读时间的组件。
返回
React.ReactNode: 渲染后的 TimeToRead 组件。
transformStyles
未记录的声明。
unregisterEntityAction
注销 DataViews 操作。
这是一个实验性 API,可能会发生变化。目前仅在 Gutenberg 插件中可用。
参数
- kind
string: 实体类型。 - name
string: 实体名称。 - actionId
string: 操作 ID。
unregisterEntityField
注销 DataViews 字段。
这是一个实验性 API,可能会发生变化。目前仅在 Gutenberg 插件中可用。
参数
- kind
string: 实体类型。 - name
string: 实体名称。 - fieldId
string: 字段 ID。
UnsavedChangesWarning
如果在离开编辑器之前存在未保存的更改,则警告用户。兼容文章编辑器和站点编辑器。
返回
React.ReactNode: 组件。
URLInput
已弃用,自 5.3 版本起,请使用
wp.blockEditor.URLInput代替。
URLInputButton
已弃用,自 5.3 版本起,请使用
wp.blockEditor.URLInputButton代替。
URLPopover
已弃用,自 5.3 版本起,请使用
wp.blockEditor.URLPopover代替。
useEntitiesSavedStatesIsDirty
未记录的声明。
usePostScheduleLabel
自定义钩子,用于获取文章排期标签。
参数
- options
Object: 钩子的选项。 - options.full
boolean: 是否获取完整标签。默认为 false。
返回
string: 文章排期标签。
usePostURLLabel
自定义钩子,用于获取文章 URL 标签。
返回
string: 过滤并解码后的文章 URL 标签。
usePostVisibilityLabel
获取当前文章可见性设置的标签。
返回
string: 文章可见性标签。
userAutocompleter
用户提及自动完成器。
类型
Object
VisualEditorGlobalKeyboardShortcuts
处理编辑器的键盘快捷键。
它提供了各种键盘快捷键的功能,例如切换编辑器模式、切换专注模式、撤销/重做、保存文章、切换列表视图以及切换侧边栏。
Warning
已弃用,自 5.3 版本起,请使用
wp.blockEditor.Warning代替。
withColorContext
已弃用,自 5.3 版本起,请使用
wp.blockEditor.createCustomColorsHOC代替。
withColors
已弃用,自 5.3 版本起,请使用
wp.blockEditor.withColors代替。
withFontSizes
已弃用,自 5.3 版本起,请使用
wp.blockEditor.withFontSizes代替。
WordCount
渲染文章内容的字数统计。
返回
React.ReactNode: 渲染后的 WordCount 组件。
WritingFlow
已弃用,自 5.3 版本起,请使用
wp.blockEditor.WritingFlow代替。
贡献到此包
这是 Gutenberg 项目的一个独立包。该项目组织为一个 monorepo。它由多个自包含的软件包组成,每个包都有特定的用途。此 monorepo 中的包发布到 npm,并被 WordPress 以及其他软件项目使用。
要了解有关为此包或整个 Gutenberg 做出贡献的更多信息,请阅读项目的主要 贡献者指南。