在Woocommerce单一产品页面中显示带有自定义短代码的产品数据

时间:2018-03-08 12:45:29

标签: php wordpress woocommerce shortcode product

在Woocommerce中,我使用3种不同的短代码功能显示:

  • 产品类别列表
  • 产品SKU
  • 特定属性的值。

我的3功能如下:

function display_woo_sku() {

    global $product;
    return $product->get_sku();

}
add_shortcode( 'woo_sku', 'display_woo_sku' );

function display_woo_farve() {

    global $product;
    return $product->get_attribute( 'farve' );

}
add_shortcode( 'woo_farve', 'display_woo_farve' );

function display_woo_style() {

    global $post, $product;
    $categ = $product->get_categories();
    return $categ;    

}
add_shortcode( 'woo_style', 'display_woo_style' );

这实际上有效,但在更新产品时会引发错误并使Facebook Pixel添加问题。

我看不出我的代码有什么问题,但由于它与插件和第三方像素工具冲突,所以一定有问题。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您的代码由于多种原因而出现了一些错误...请尝试使用此代码:

function display_woo_sku() {
    if( ! is_admin() && ! is_product() ) return;

    global $post;

    // Get an instance of the WC_Product Object
    $product = wc_get_product( $post->ID );
    return $product->get_sku();
}
add_shortcode( 'woo_sku', 'display_woo_sku' );

function display_woo_attr_farve() {
    if( ! is_admin() && ! is_product() ) return;

    global $post;

    // Get an instance of the WC_Product Object
    $product = wc_get_product( $post->ID );
    return $product->get_attribute( 'farve' );
}
add_shortcode( 'woo_farve', 'display_woo_attr_farve' );

function display_woo_cats() {
    if( ! is_admin() && ! is_product() ) return;

    global $post;

    // $categ = $product->get_categories(); // <== <== <== <== IS DEPRECATED

    return wc_get_product_category_list( $post->ID );
}
add_shortcode( 'woo_cats', 'display_woo_cats' );

此代码位于您的活动子主题(或主题)的function.php文件中。经过测试并正常工作。

它应该解决你的问题...