WP电子商务在产品页面上显示类别名称


WP-Ecommerce show category name on product page

我正在使用WP电子商务,希望在单个产品页面上显示产品的类别。我四处搜索,发现了一些几乎有效的东西(Rohan在这个网站上发布):

function cdl_get_cat() {
global $wp_query, $wpsc_query;
$query_data = Array();
$cdl_post_id = wpsc_the_product_id();
$categories = wp_get_object_terms( $cdl_post_id , 'wpsc_product_category' );
//if product is associated w more than one category
if(count($categories) > 1 && isset($wpsc_query->query_vars['wpsc_product_category']))
$query_data['category'] = $wpsc_query->query_vars['wpsc_product_category'];
elseif(count($categories) > 0)
$query_data['category'] = $categories[0]->slug;
return $query_data['category'];
}
echo cdl_get_cat();

虽然这段代码做了我需要的事情,但它将类别名称显示为段塞(即eye-shadow而不是eye shadow)。我对PHP不是很熟练,所以我不确定需要更改什么才能显示名称而不是段塞。

我一整天都在为此而挣扎,而且我在php方面也不太好。。。但我删除了这一点(我不明白…):

//if product is associated w more than one category
if(count($categories) > 1 && isset($wpsc_query->query_vars['wpsc_product_category']))
$query_data['category'] = $wpsc_query->query_vars['wpsc_product_category'];
elseif(count($categories) > 0)

然后在此处将"slug"更改为"name":

$query_data['category'] = $categories[0]->slug;

所以你只需要这个:

<?php function cdl_get_cat() {
global $wp_query, $wpsc_query;
$query_data = Array();
$cdl_post_id = wpsc_the_product_id();
$categories = wp_get_object_terms( $cdl_post_id , 'wpsc_product_category' );
$query_data['category'] = $categories[0]->name;
return $query_data['category'];
}
echo cdl_get_cat();
?>

如果一个产品有多个类别,更改[0]会给你一个不同的类别,因为我认为$categories是一个包含所有相关类别的数组。如果需要,你可能可以循环浏览所有类别。我应该看看怎么做!

谢谢,发现这对将类添加到其所属类别的产品中很有用:

产品循环前:

    <?php function cdl_get_cat() {
    global $wp_query, $wpsc_query;
    $query_data = Array();
    $cdl_post_id = wpsc_the_product_id();
    $categories = wp_get_object_terms( $cdl_post_id , 'wpsc_product_category' );
    $count = count($categories);
        for ($i = 0; $i < ($count); $i++) {
            $query_data['category'] = $categories[$i]->name;
            echo $query_data['category'];
            if ($i < ($count - 1))
            echo ", ";
        }
    }  
    cdl_get_cat();
    ?>

然后在循环中:

<li class="product_grid_item product_view_<?php echo wpsc_the_product_id(); ?> <?php cdl_get_cat(); ?>">

哇,我想我找到了,或者找到了更好的地方。。。这应该得到与显示的产品相关联的所有类别,然后循环出一个用逗号分隔的列表。

<?php function cdl_get_cat() {
global $wp_query, $wpsc_query;
$query_data = Array();
$cdl_post_id = wpsc_the_product_id();
$categories = wp_get_object_terms( $cdl_post_id , 'wpsc_product_category' );
$count = count($categories);
    for ($i = 0; $i < ($count); $i++) {
        $query_data['category'] = $categories[$i]->name;
        echo $query_data['category'];
        if ($i < ($count - 1))
        echo ", ";
    }
}  
cdl_get_cat();
?>