将woocommerce产品类型添加到body类数组中

时间:2013-04-19 12:58:31

标签: wordpress global woocommerce

我正在尝试将Woocommerce产品类型添加到带有

的header.php中调用的Wordpress正文标记类数组中
body_class();

我在functions.php中有以下功能,但它没有添加类。如果我删除条件并且只有

$classes[] = 'simple-product';

然后添加课程。我认为这与获得全球价值的问题有关。我打电话给$ woocommerce,$ post和$ product globals,因为我不确定我真正需要它。

//Add Woocommerce body classes
add_filter('body_class','ttm_woocommerce_body_classes');
function ttm_woocommerce_body_classes($classes){
    global $woocommerce, $post, $product;
    if ( $product->product_type == 'simple' ) $classes[] = 'simple-product';
    return $classes;
}

由于

2 个答案:

答案 0 :(得分:4)

您是否尝试过var_dump($product)来查看该对象中存在的内容(如果有的话)?

根据codex,您可能需要使用$post->ID自行填充,如下所示:

//Add Woocommerce body classes
add_filter('body_class','ttm_woocommerce_body_classes');
function ttm_woocommerce_body_classes($classes){
    global $post;
    $product = get_product( $post->ID );
    if ( $product->product_type == 'simple' ) $classes[] = 'simple-product';
    return $classes;
}

答案 1 :(得分:0)

在woocommerce页面中,在您的网站正文标记中添加product_type名称。首先,您需要将此页面作为产品页面。

使用get_product(),您的页面正在使用woocommerce功能。

这是添加在body标签中添加的所有product_type名称的代码。

将此代码添加到您的激活主题文件夹:functions.php

 

add_filter('body_class','obw_woocommerce_body_classes');
function obw_woocommerce_body_classes( $classes ) {
    global $woocommerce, $post, $product;
    $product = get_product( $post->ID );
    $product_type = $product->product_type;
    if ( $product->product_type == 'external' ) $classes[] = 'external-product';
    if ( $product->product_type == 'grouped' ) $classes[] = 'grouped-product';
    if ( $product->product_type == 'simple' ) $classes[] = 'simple-product';
    if ( $product->product_type == 'variable' ) $classes[] = 'variable-product';
    return $classes;
}