2

我正在使用 WP-Ecommerce 并希望在单个产品页面上显示产品的类别。我四处搜索,发现了一些几乎可以工作的东西(由 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();

虽然此代码可以满足我的需要,但它会将类别名称显示为 slug(即眼影而不是眼影)。我对 PHP 不是很流利,所以我不确定需要更改什么才能显示名称而不是 slug。

4

3 回答 3

1

谢谢,发现这对于将类添加到它所在类别的产品很有用:

在产品循环之前:

    <?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(); ?>">
于 2013-02-20T11:33:52.743 回答
1

我整天都在为此苦苦挣扎,而且我也不擅长 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 是一个包含所有相关类别的数组。如果需要,您应该能够遍历所有这些。我应该看看如何做到这一点!

于 2012-11-22T15:58:40.370 回答
0

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

<?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();
?>
于 2012-11-22T16:31:23.237 回答