本页面致力于介绍多种禁用 Post Editor(文章编辑器)和 Site Editor(站点编辑器)中其他策展文档未涵盖的特定功能的方法。
限制区块选项
有时您可能不希望用户完全无法访问某个区块。要控制插入器中可用的内容,您可以采取两种方法:允许列表(禁用列表中未包含的所有区块)或拒绝列表(取消注册特定区块)。
策展标题级别
具有标题级别下拉菜单的核心 WordPress 区块支持 levelOptions 属性。这适用于标题、站点标题、站点标语、查询标题、文章标题和评论标题区块。levelOptions 属性接受一个数字数组,对应于标题级别,其中 1 代表 H1,2 代表 H2,依此类推。
此属性允许您指定下拉 UI 中应出现的标题级别,提供了一种轻量级的策展方法,无需弃用区块。现有的所有标题级别在标记中均得到保留,而 levelOptions 仅影响 UI 显示。
您可以直接在区块标记中应用此属性,这是一种将在区块模板、模板部分和模式中常用的技术。例如,以下标记通过将 "levelOptions":[3,4,5] 设置来禁用标题块中的 H1、H2 和 H6。
<!-- wp:heading {"level":3,"levelOptions":[3,4,5],"className":"wp-block-heading"} -->
<h3 class="wp-block-heading">Markup example</h3>
<!-- /wp:heading -->
您还可以使用 区块过滤器 全局或针对特定区块设置此属性的默认值。下面的示例禁用了所有标题块中的 H1、H2 和 H6。您可以通过基于用户能力等条件限制某些标题级别来进一步自定义此功能。
function example_modify_heading_levels_globally( $args, $block_type ) {
if ( 'core/heading' !== $block_type ) {
return $args;
}
// Remove H1, H2, and H6.
$args['attributes']['levelOptions']['default'] = [ 3, 4, 5 ];
return $args;
}
add_filter( 'register_block_type_args', 'example_modify_heading_levels_globally', 10, 2 );
禁用模式目录
要完全阻止在插入器中访问随 WordPress 核心捆绑的模式,可以将以下内容添加到您的 functions.php 文件中:
function example_theme_support() {
remove_theme_support( 'core-block-patterns' );
}
add_action( 'after_setup_theme', 'example_theme_support' );
禁用区块变体
某些核心区块实际上是 区块变体。一个很好的例子是行和堆叠块,它们实际上是组块的变体。如果您想禁用这些“区块”,实际上需要禁用相应的变体。
区块变体使用 JavaScript 注册,需要使用 JavaScript 进行禁用。下面的代码将禁用行变体。
wp.domReady( () => {
wp.blocks.unregisterBlockVariation( 'core/group', 'group-row' );
});
假设该代码位于主题文件夹根目录下的 disable-variations.js 文件中,您可以使用以下代码在主题的 functions.php 中注册此文件。
function example_disable_variations_script() {
wp_enqueue_script(
'example-disable-variations-script',
get_template_directory_uri() . '/disable-variations.js',
array( 'wp-dom-ready' ),
wp_get_theme()->get( 'Version' ),
true
);
}
add_action( 'enqueue_block_editor_assets', 'example_disable_variations_script' );
禁用区块样式
有几个核心区块包含自己的 区块样式。例如,图像块包含一个名为“圆角”的圆角图像区块样式。您可能不希望用户将图像设为圆角,或者您可能更喜欢使用边框半径控件而不是区块样式。无论如何,禁用任何不需要的区块样式都很容易。
与区块变体不同,您可以在 JavaScript 或 PHP 中注册样式。如果样式是在 JavaScript 中注册的,则必须使用 JavaScript 进行禁用。如果使用 PHP 注册,则可以使用任一方式禁用样式。所有核心区块样式均在 JavaScript 中注册。
因此,您将使用以下代码来禁用图像块的“圆角”区块样式。
wp.domReady( () => {
wp.blocks.unregisterBlockStyle( 'core/image', 'rounded' );
});
此 JavaScript 的注册方式应与上面的区块变体示例类似。有关如何使用 PHP 注册和取消注册样式的说明,请参阅 区块样式 文档。
禁用代码编辑器访问权限
代码编辑器允许您查看页面或文章的底层区块标记。虽然此视图对经验丰富的用户很有用,但编辑内容时可能会无意中破坏区块标记。将以下内容添加到您的 functions.php 文件中以限制访问。
function example_restrict_code_editor_access( $settings ) {
$settings[ 'codeEditingEnabled' ] = false;
return $settings;
}
add_filter( 'block_editor_settings_all', 'example_restrict_code_editor_access' );
此代码可防止所有用户访问代码编辑器。您也可以添加 能力 检查以禁用特定用户的访问权限。
禁用响应式编辑
“视图”菜单中的“响应式样式”选项允许用户仅将样式更改应用于单个视口。如果您希望样式编辑始终适用于每个视口,请将以下内容添加到您的 functions.php 文件中。
function example_disable_responsive_editing( $settings ) {
$settings[ 'responsiveEditingEnabled' ] = false;
return $settings;
}
add_filter( 'block_editor_settings_all', 'example_disable_responsive_editing' );
已在 theme.json 或全局样式中定义的响应式样式将继续在前端应用。
禁用区块状态编辑
区块检查器和全局样式中的状态控件允许用户将区块样式应用于状态。要隐藏这些控件,请将以下内容添加到您的 functions.php 文件中。
function example_disable_block_states_editing( $settings ) {
$settings[ 'blockStatesEditingEnabled' ] = false;
return $settings;
}
add_filter( 'block_editor_settings_all', 'example_disable_block_states_editing' );
已保存在 theme.json、全局样式或区块的 style 属性中的状态样式将继续在编辑器和前端中应用。此设置不影响视口状态控件,后者由 responsiveEditingEnabled 控制。
禁用 RichText 块的格式选项
支持 RichText 的区块带有 WordPress 提供的默认格式选项。
需要使用 JavaScript 和 unregisterFormatType 禁用格式选项。下面的代码将全局禁用内联图像、语言、键盘输入、下标和上标选项。
wp.domReady( () => {
wp.richText.unregisterFormatType( 'core/image' );
wp.richText.unregisterFormatType( 'core/language' );
wp.richText.unregisterFormatType( 'core/keyboard' );
wp.richText.unregisterFormatType( 'core/subscript' );
wp.richText.unregisterFormatType( 'core/superscript' );
});
此 JavaScript 的注册方式应与上面的区块变体示例类似。