如何在WordPress短代码中传递可变product id参数
排查基础问题
首先先确认两个前提:
- 你使用的
product_page是WooCommerce内置短代码,需要先确保WooCommerce插件正常启用 - 你传入的ID对应的产品是公开状态,不是草稿、私密或已删除,你可以直接访问
/wp-admin/post.php?post=你的ID&action=edit确认产品是否存在
场景1:PHP代码中动态调用短代码
你原来的写法有两个常见错误点:
- 没有给id属性加引号,变量如果存在特殊字符会导致短代码解析失败
- 没有输出
do_shortcode的返回值,短代码执行结果不会自动渲染到页面
正确写法:
// 可先加这行调试,确认$packages[0]输出的是有效产品ID // var_dump($packages[0]); // 正确调用,加属性转义和引号,输出结果 echo do_shortcode( '[product_page id="' . esc_attr( $packages[0] ) . '"]' );
场景2:在文章/页面编辑器中使用动态ID
原生product_page短代码不支持动态参数,你可以自定义封装短代码实现,将以下代码添加到主题functions.php文件或自定义功能插件中:
add_shortcode( 'dynamic_product_page', function() { // 替换为你自己的动态ID获取逻辑,示例为取URL参数pid $product_id = isset( $_GET['pid'] ) ? intval( $_GET['pid'] ) : 0; // 校验产品ID有效性 if ( $product_id < 1 || get_post_type( $product_id ) !== 'product' ) { return '<p>当前产品不存在</p>'; } return do_shortcode( '[product_page id="' . esc_attr( $product_id ) . '"]' ); } );
配置完成后,在编辑器中插入[dynamic_product_page]即可加载动态ID对应的产品内容。
内容的提问来源于stack exchange,提问作者InsXghT
相关产品推荐
相关产品推荐

