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();

このコードは必要な処理を実行しますが、カテゴリ名をスラッグとして表示します (つまり、アイ シャドウではなくアイ シャドウ)。私は PHP にあまり詳しくないので、スラッグの代わりに名前を表示するために何を変更する必要があるのか​​ わかりません。

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)

ここで「スラッグ」を「名前」に変更します。

$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();
?>

1 つの製品に複数のカテゴリがある場合、[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 に答える