You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:15:03