2

我正在尝试将 Woocommerce 产品类型添加到在 header.php 中调用的 Wordpress 正文标记类数组中

body_class();

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

$classes[] = 'simple-product';

然后添加类。我认为这与获取全局值的问题有关。我打电话给 $woocommerce、$post 和 $product 全局变量,因为我不确定我真正需要哪个。

//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;
}

谢谢

4

2 回答 2

5

您是否尝试过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;
}
于 2013-04-19T15:21:24.833 回答
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;
}

于 2017-01-13T13:19:57.003 回答