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

如何实现WooCommerce按SKU显示产品价格的短代码

WooCommerce 根据SKU显示价格的短代码实现

问题说明

想要通过短代码[woocommerce_price sku="sku123"]在页面中根据产品SKU显示对应价格,但自行编写的代码无法正常运行,原代码如下:

extract( shortcode_atts( array(
        'sku' => null,
    ), $atts, 'woocommerce_price' ) );
    
    if( intval( $sku ) > 0 && function_exists( 'wc_get_product' ) ){
          $product = wc_get_product_id_by_sku( $sku );
          
          if ( $product->get_price() > 0 ) {
              return $product->get_price_html();
          } else {
              return __( "Price unavailable", "woocommerce" );
          }
     }
}
add_shortcode( 'woocommerce_price', 'wc_price_shortcode_callback' );

原代码的问题

  • 缺失函数定义开头:短代码回调函数wc_price_shortcode_callback没有声明function关键字和参数
  • SKU判断逻辑错误:用intval($sku) > 0会过滤掉非数字格式的SKU,不符合实际使用场景
  • 产品对象处理错误:wc_get_product_id_by_sku返回的是产品ID,不是产品对象,直接调用get_price()会报错
  • 缺少产品存在性校验:如果SKU无效,未处理$product为false的情况,会引发错误

修正后的代码

function wc_price_shortcode_callback( $atts ) {
    // 解析短代码参数
    $atts = shortcode_atts( array(
        'sku' => '',
    ), $atts, 'woocommerce_price' );

    // 检查SKU是否为空,以及WooCommerce函数是否存在
    if ( empty( $atts['sku'] ) || !function_exists( 'wc_get_product' ) ) {
        return __( "Price unavailable", "woocommerce" );
    }

    // 通过SKU获取产品ID,再转为产品对象
    $product_id = wc_get_product_id_by_sku( $atts['sku'] );
    $product = wc_get_product( $product_id );

    // 检查产品是否存在且价格有效
    if ( $product && $product->get_price() > 0 ) {
        return $product->get_price_html();
    } else {
        return __( "Price unavailable", "woocommerce" );
    }
}
add_shortcode( 'woocommerce_price', 'wc_price_shortcode_callback' );

使用方法

直接在页面、文章或自定义内容中插入短代码即可:

  • 示例1:[woocommerce_price sku="sku123"]
  • 示例2:[woocommerce_price sku="abc-456"]

注意事项

  • 代码需添加到主题的functions.php文件,或使用自定义代码插件(如Code Snippets)
  • 确保WooCommerce已激活,否则短代码会返回"Price unavailable"

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:45:38