製品からのID
(1345
)を持っていますが、その特定の製品のカテゴリ名はどのようにして取得できますか?
やってみる
$post_categories = wp_get_post_categories( $post->ID );
print_r( $post_categories );
しかしそれは出力します:
Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )
それはどういう意味ですか?
ありがとう
質問はwoocommerceとタグ付けされているので、私はそれがwoocommerce wordpressプラグインによって作成された製品CPTだと思います。そうでない場合、この答えは当てはまりません。
商品カテゴリは通常のカテゴリではなく、商品のために特別に作成されたカスタム分類法で、「カテゴリ」というラベルが付いています。
あなたが代わりの解決策を試すことができるものが見つからない場合は、あなたのためにこれを行うにはいくつかの機能を見つけるためにwoocommerceのドキュメントを調べる必要があります。そのためには、まず分類法の名前を知っておく必要があります。バックエンドのカテゴリ編集画面にアクセスしたときに、ブラウザのURLの内側からコピーできます。それから、 wp_get_post_terms
を使って用語を得ることができます。
私は自分の質問に答えました。
<?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
オプション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;
}