如何以编程方式输出Gutenberg区块?是否存在类似do_shortcode的对应函数?
程序化输出Gutenberg区块的方法
好问题!你猜的没错,WordPress确实提供了和do_shortcode()对应的函数来实现Gutenberg区块的程序化输出——正是你提到的do_block(),它的用法完全符合你的预期!
基础用法
如果你只需要输出默认配置的区块,直接传入区块的注册名称即可,比如你说的WooCommerce畅销产品区块:
echo do_block('woocommerce/product-best-sellers');
带自定义属性的输出
如果需要给区块设置自定义参数(比如调整显示的列数、行数),可以传入完整的区块HTML注释格式字符串,就像Gutenberg编辑器后台生成的那样:
echo do_block( '<!-- wp:woocommerce/product-best-sellers {"columns":3,"rows":2,"orderby":"date"} /-->' );
更灵活的替代方案:render_block()
如果你需要动态构建区块属性(比如从数据库或用户输入获取参数),render_block()会更适合。它接受一个包含区块名称和属性的数组:
$block_attributes = array( 'blockName' => 'woocommerce/product-best-sellers', 'attrs' => array( 'columns' => get_option('wc_best_sellers_columns'), // 动态获取配置 'rows' => 2, ), ); echo render_block($block_attributes);
注意事项
do_block()是WordPress 5.5版本才引入的,如果你需要兼容更早的WP版本,建议使用render_block()(它从5.0就存在了)。- 确保你要输出的区块已经被正确注册——比如WooCommerce的区块需要激活WooCommerce插件,否则函数会返回空内容。
- 部分区块可能依赖前端脚本或样式,输出后记得确保对应的资源已加载(大部分核心和常用插件区块会自动处理,但自定义区块可能需要手动注册资源)。
内容的提问来源于stack exchange,提问作者gidiwe2427
相关产品推荐
相关产品推荐

