WordPress 6.9 的 Block Bindings 玩明白了,自定义字段不用再写 shortcode 了
说实话,我之前一直在纠结一个问题——想在文章里动态显示 自定义 字段的内容,要么写 shortcode,要么写一个专门的 自定义 block,烦得要死。昨晚翻了翻 Make WordPress Core 的更新日志,发现 6.9 把 Block Bindings 这块儿彻底放开了,我试了一下,居然这么简单,我之前怎么没想到。

先补个背景。 Block Bindings 这个 API 是 6.5 引入的,当时只支持 post meta、post data、term data、pattern overrides 这几个内置数据源,而且能绑定的 block 属性也有限。到了 6.9,官方直接加了两个大杀器:服务端的 block_bindings_supported_attributes_{$block_type} 过滤器,能让你自定义哪些 block 属性可以绑数据; 编辑器 端也能注册自定义 source,在下拉框里直接选。
举个实际场景:你有 product_price、product_sku 这两个自定义字段,想让段落和按钮自动显示它们。以前你要么写 do_shortcode,要么搞个动态 block,现在直接一段 PHP 就搞定:
// ========== 核心代码开始 ==========
// ⚠️ 必须挂在 init 钩子上,挂晚了会报 source 不存在
// 别问我怎么知道的,问就是踩过坑
add_action( 'init', 'lk_register_price_source' );
function lk_register_price_source() {
register_block_bindings_source( 'lk/product-price', array(
'label' => '商品价格',
'uses_context' => array( 'postId' ),
// 6.9 新增,能拿到上下文
'get_value_callback' => function( $source_args, $block_instance, $attr ) {
$post_id = $block_instance->context['postId'] ?? 0;
// ⚠️ meta key 必须在注册时 show_in_rest 设为 true
// 否则编辑器里根本看不到,我在这儿卡了半小时
$price = get_post_meta( $post_id, 'product_price', true );
return $price ? '¥' . number_format( (float) $price, 2 ) : '价格待定';
},
) );
}
// ========== 核心代码结束 ==========
然后你在段落 block 的 metadata.bindings 里指一下这个 source,渲染时 WordPress 会自动替换值,block 里原来的内容作为 fallback 保留——也就是说字段为空的时候页面不会开天窗。
隐藏福利:6.9 的 Interactivity API 也加了 fetch priority 和 onNavigate 回调,配合 Block Bindings 能做出几乎不写 JS 的动态前端,比硬塞 React 进主题香多了。
官方文档:https://developer.wordpress.org/reference/functions/register_block_bindings_source/
Make WordPress Core 更新说明:https://make.wordpress.org/core/2025/11/12/block-bindings-improvements-in-wordpress-6-9/
博主点评: 这 API 确实是近两年 Gutenberg 侧少有的实打实好东西,但 meta key 注册必须 show_in_rest => true 这一条坑了不少人,下划线开头的 key 直接绑不了,别问我为什么,文档里就一句话,被坑过才知道。
《盘天下资源网 | 免费网盘资源分享》一站式免费精选网盘影视大全、资源分享平台。提供免费网盘资源分享,包括热门高清电影、热门电视剧、热播短剧、无损音乐、精品电子书、学习课程资料等。所有资源均来自互联网分享,支持百度网盘、迅雷云盘、夸克网盘、UC网盘一键转存或在线高清观看。
- 上一篇:WordPress 站点配置谷歌 Gmail API 邮件接口步骤
- 下一篇:没有了啦!






