WordPress开发笔记

WordPress通过函数代码实现为区块样板添加自定义分类的方法

WordPress区块编辑器(Gutenberg)的区块样板(Block Patterns)功能让用户能够保存和复用常用的内容组合。为了更好地组织和管理这些样板,WordPress允许用户创建自定义分类。本文将详细介绍通过函数代码实现为区块样板添加自定义分类的方法。

核心函数

通过函数代码实现为区块样板添加自定义分类,需要使用WordPress系统函数: register_block_pattern_category() 。

register_block_pattern_category() 函数是该功能实现的核心函数。

实现方法

通过编程方式添加自定义分类是最常见的方法,通常在主题的functions.php文件中实现。使用register_block_pattern_category函数注册新的分类的函数结构如下:

function zzw_register_custom_pattern_category() {
    register_block_pattern_category(
        'custom-category', // 分类标识符
        array(
            'label' => __( '自定义分类', 'textdomain' ), // 显示名称
            'description' => __( '这是我的自定义区块样板分类', 'textdomain' ), // 分类描述
        )
    );
}
add_action( 'init', 'zzw_register_custom_pattern_category' );

上述代码中,custom-category是分类的唯一标识符,label是在后台显示的标签名称,description是分类的详细描述(可选)。

建议将 ‘textdomain’ 改为你的主题名称或插件名称。

示例代码

也可以同时注册多个自定义分类。

//为区块样板添加自定义分类
function zzw_register_pattern_categories() {

    register_block_pattern_category( 'diybodybox', array( 
        'label'       => __( '我的样式块', 'twentytwentyfour' ),
        'description' => __( '我自定义的样式块', 'twentytwentyfour' )
    ) );

    register_block_pattern_category( 'diyoneimg', array( 
        'label'       => __( '单图', 'twentytwentyfour' ),
        'description' => __( '包含1张图片的内容设计块,用于实现快速页面内容设计', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diytwoimgs', array( 
        'label'       => __( '双图', 'twentytwentyfour' ),
        'description' => __( '包含2张图片的内容设计块,用于实现快速页面内容设计', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diyduoimgs', array( 
        'label'       => __( '多图', 'twentytwentyfour' ),
        'description' => __( '包含多张图片的内容设计块,用于实现快速页面内容设计', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diyheaders', array( 
        'label'       => __( '页眉', 'twentytwentyfour' ),
        'description' => __( '所有的页眉设计', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diyfooters', array( 
        'label'       => __( '页脚', 'twentytwentyfour' ),
        'description' => __( '所有的页脚设计', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diybreadcrumb', array( 
        'label'       => __( '面包屑导航', 'twentytwentyfour' ),
        'description' => __( '包括网站导航、面包屑导航、顶部导航、底部导航等各类导航样式', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diylistnoloop', array( 
        'label'       => __( '非循环列表', 'twentytwentyfour' ),
        'description' => __( '非循环列表,需要手动修改和输入', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diyloop', array( 
        'label'       => __( '循环列表', 'twentytwentyfour' ),
        'description' => __( '是循环查询的设计样式', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diyubs538', array( 
        'label'       => __( 'Bootsrtap v5 设计', 'twentytwentyfour' ),
        'description' => __( '基于使用Bootsrtap v5.3 的设计样式', 'twentytwentyfour' )
    ) );
    
    register_block_pattern_category( 'diyasideright', array( 
        'label'       => __( '右边栏', 'twentytwentyfour' ),
        'description' => __( '右侧边栏设计样式', 'twentytwentyfour' )
    ) );
    register_block_pattern_category( 'diyasideleft', array( 
        'label'       => __( '左边栏', 'twentytwentyfour' ),
        'description' => __( '左侧边栏设计样式', 'twentytwentyfour' )
    ) );

    
}
add_action( 'init', 'zzw_register_pattern_categories' );

编程方式适合主题开发者,可以在主题中预定义分类,但删除时需要同时修改代码和清理后台数据

合理的分类管理都能帮助用户更好地组织和复用区块样板,提高内容创建效率。建议主题开发者优先考虑用户需求,提供有价值预设分类的同时,也要确保用户能够方便地管理这些分类。