如何在Gutenberg编辑器中实现产品页到表单页的动态URL预填充
解决Jetpack联系表单预填充产品标题的问题
方法1:自定义短代码(仅需添加少量PHP到主题)
虽说你不想碰PHP,但这是最靠谱的无JS方案,而且只需要往子主题的functions.php(别改父主题,避免主题更新丢失代码)里加这段短代码:
add_shortcode('product_inquiry_link', function() { global $product; if (is_product() && $product) { $encoded_title = urlencode($product->get_name()); return '<a href="/inquiry-page?g1811-original=' . $encoded_title . '">Inquire</a>'; } return ''; });
添加完成后,在Gutenberg编辑器的产品页面(或产品模板)中插入一个短代码块,输入[product_inquiry_link]即可。这个短代码会自动识别当前产品标题,编码后插入到链接参数中,避免标题里的空格、特殊字符破坏URL结构。
方法2:使用Gutenberg动态内容插件(完全无需PHP)
要是完全不想碰代码,可以安装支持动态内容的Gutenberg插件,比如Advanced Custom Fields (ACF) 或Gutenberg Dynamic Fields:
- 安装并激活插件后,在Gutenberg中插入一个HTML块
- 输入链接时,用插件提供的动态标签替换
[post_title],比如ACF的[acf field="post_title"](需先开启ACF的动态短代码功能),或插件自带的产品标题动态标签 - 注意确保标题被URL编码,部分插件会自动处理,若未处理,可使用插件的URL编码功能包裹动态标签
验证效果
不管用哪种方法,最终生成的链接应该是类似/inquiry-page?g1811-original=Product%20Name的格式(带实际产品标题的编码内容),而非保留[post_title]纯文本。点击链接进入询盘页面后,Jetpack表单的g1811-original字段会自动填充产品标题——因为你已经将查询参数和表单字段名对应匹配。
补充:WooCommerce自带短代码本身不支持直接在链接中插入动态产品标题,所以你之前尝试无效是正常情况。
内容的提问来源于stack exchange,提问作者Yawner
相关产品推荐
相关产品推荐

