web-dev-qa-db-ja.com

商品のIDからカテゴリを取得しますか?

製品からのID1345)を持っていますが、その特定の製品のカテゴリ名はどのようにして取得できますか?

やってみる

$post_categories = wp_get_post_categories( $post->ID );
print_r( $post_categories );

しかしそれは出力します:

Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )

それはどういう意味ですか?

ありがとう

6
Rodrigo Sanz

質問はwoocommerceとタグ付けされているので、私はそれがwoocommerce wordpressプラグインによって作成された製品CPTだと思います。そうでない場合、この答えは当てはまりません。

商品カテゴリは通常のカテゴリではなく、商品のために特別に作成されたカスタム分類法で、「カテゴリ」というラベルが付いています。

あなたが代わりの解決策を試すことができるものが見つからない場合は、あなたのためにこれを行うにはいくつかの機能を見つけるためにwoocommerceのドキュメントを調べる必要があります。そのためには、まず分類法の名前を知っておく必要があります。バックエンドのカテゴリ編集画面にアクセスしたときに、ブラウザのURLの内側からコピーできます。それから、 wp_get_post_terms を使って用語を得ることができます。

7
Mridul Aggarwal

私は自分の質問に答えました。

<?php 
$term_list = wp_get_post_terms($id_product,'product_cat',array('fields'=>'ids'));
$cat_id = (int)$term_list[0];
echo get_term_link ($cat_id, 'product_cat');

?>

あなたの助けをありがとうMridul Aggarwal

8
Rodrigo Sanz

オプション1

この関数を使ってすべてのproduct_catを取得します

global $product;

$terms = get_the_terms( $product->get_id(), 'product_cat' );

公式ドキュメント


Option#2もしあなたがそれらのidだけを必要とするなら、あなたはこの関数を使って、特定のproductに関連したすべてのproduct_category_idを得ることができます:

global $product;

$product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );

公式ドキュメント


追加

たとえばカテゴリ名を印刷したい場合は、カテゴリterm-objectが必要です。これはget_term_by()を使って取得することができます。

例:

foreach( $product_cats_ids as $cat_id ) {
    $term = get_term_by( 'id', $cat_id, 'product_cat' );

    echo $term->name;
}
5
Unicco