You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Wagtail管理面板中自定义区块组的排序?

自定义区块组排序的实现方案

如果你已经完成区块分组但无法自定义排序,可根据你使用的编辑器环境,通过以下两种常见方式实现需求:

1. 注册分组时指定优先级(自定义区块场景)

在注册区块组时,通过添加priority参数控制排序优先级——数值越小,组的展示位置越靠前。

示例代码(以WordPress Gutenberg为例):

// 文本编辑器组(优先级1,确保排在最顶部)
wp.blocks.registerBlockCategory('text-editor', {
    title: '文本编辑器',
    icon: 'editor-textcolor',
    priority: 1
});

// 图片组(优先级2)
wp.blocks.registerBlockCategory('image-group', {
    title: '图片组',
    icon: 'format-image',
    priority: 2
});

// 轮播区块组(优先级3,与图片组相邻)
wp.blocks.registerBlockCategory('carousel-group', {
    title: '轮播区块',
    icon: 'slides',
    priority: 3
});

2. 用钩子重排已有分组(默认/第三方区块场景)

如果是调整系统默认或第三方插件的区块组,可通过编辑器提供的钩子重新排序分组数组。

示例PHP代码(WordPress环境):

function custom_block_category_order($categories) {
    // 定义你需要的排序顺序
    $desired_order = ['text-editor', 'image-group', 'carousel-group', 'common', 'embed'];
    
    $sorted_categories = [];
    // 先按自定义顺序添加目标组
    foreach ($desired_order as $slug) {
        foreach ($categories as $category) {
            if ($category->slug === $slug) {
                $sorted_categories[] = $category;
                break;
            }
        }
    }
    
    // 补充剩余未指定顺序的组
    foreach ($categories as $category) {
        if (!in_array($category->slug, $desired_order)) {
            $sorted_categories[] = $category;
        }
    }
    
    return $sorted_categories;
}
add_filter('block_categories_all', 'custom_block_category_order');

额外提示

  • 如果你使用的是Elementor这类可视化编辑器,可先检查插件后台的「区块管理」或「面板设置」,部分插件支持直接拖拽排序区块组。
  • 不同编辑器的API逻辑有差异,若上述方案不适用,可查阅编辑器官方文档的「区块分类」相关扩展接口。

内容的提问来源于stack exchange,提问作者Alessio Li Volsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:20:53