製品のIDからカテゴリを取得しますか?
-
-
IDは何を表していますか?「製品」とは何ですか?これはカスタム投稿タイプですか?メタフィールド?何?What does the ID represent? What is a 'product'? Is this a custom post type? A meta field? What?
- 2
- 2012-11-23
- s_ha_dum
-
こんにちは、それはwoocommerce製品であり、投稿タイプです.Hi, It's a woocommerce product and it's a post type.
- 0
- 2012-11-23
- Rodrigo Sanz
-
4 回答
- 投票
-
- 2012-11-23
質問にはwoocommerceのタグが付けられているため、woocommerceワードプレスプラグインによって作成された製品CPTであると想定しています.そうでない場合、この回答は適用されません.
商品カテゴリは通常のカテゴリではなく、「カテゴリ」というラベルが付いた商品専用に作成されたカスタム分類法です.
woocommerceのドキュメントを調べて、これを実行する関数を見つける必要があります.何も見つからない場合は、別の解決策を試すことができます.そのためには、最初に分類法の名前を知っておく必要があります.バックエンドのカテゴリ編集画面にアクセスすると、ブラウザのURL内からコピーできます.次に、
wp_get_post_terms
を使用して条件を取得できます.Since the question is tagged woocommerce, i'm assuming that it's a product CPT created by woocommerce wordpress plugin. This answer doesn't apply if that's not the case.
The products categories is not normal categories, they are a custom taxonomy created specifically for products which is just labeled as "Categories".
You should go through the woocommerce documentation to find some function that would do this for you, if you don't find anything you can try an alternative solution. For that, first you should know the name of the taxonomy. You can copy it from inside the url in your browser when you visit categories edit screen in the backend. Then you can use
wp_get_post_terms
to get the terms.-
こんにちは、あなたの答えに感謝します.そして、はいはワードプレスのwoocommerce製品です.さて、私はそれを試してみるつもりです、wp_get_post_termsの$ argsは何ですか?「taxonomy」と「args」はオプションであることがわかったので、IDのみで試してみます.Hi, thanks for your answer. And yes is a woocommerce product in wordpress. Ok, i'm going to try it, what are the $args for wp_get_post_terms ? i see the "taxonomy" and "args" are optional, so i'm going to try only with the ID.
- 0
- 2012-11-23
- Rodrigo Sanz
-
IDだけでは動作しません.デフォルトの分類法は `post_tag`です.そこに分類法の名前を渡す必要があります.`$ args`がなくても機能しますが、必要に応じて使用できます.[このページ](http://codex.wordpress.org/Function_Reference/wp_get_object_terms)で説明されているように、デフォルトをオーバーライドすることを目的としています.It won't work only with ID. The default taxonomy is `post_tag`. You need to pass the name of the taxonomy there. It will work without `$args` but you can use it if you want. It's meant to override the defaults as explained on [this page](http://codex.wordpress.org/Function_Reference/wp_get_object_terms)
- 0
- 2012-11-24
- Mridul Aggarwal
-
テストしましたが、製品が含まれるカテゴリが出力されません.これを使用しました、 "all")); print_r($term_list); ?>I tested but it doesn't output the categiry that the product is in. I used this, "all")); print_r($term_list); ?>
- 0
- 2012-11-25
- Rodrigo Sanz
-
これを出力します:Array([0]=> stdClass Object([term_id]=> 104 [name]=>new [slug]=>new [term_group]=> 0 [term_taxonomy_id]=> 104 [taxonomy]=>product_tag[説明]=>Holaquétalestoesunadescripción?[親]=> 0 [カウント]=> 8))配列([0]=> stdClassオブジェクト([term_id]=> 104 [名前]=>新しい[slug]=>new [term_group]=> 0 [term_taxonomy_id]=> 104 [taxonomy]=>product_tag [description]=>Holaquétalestoesunadescripción?[parent]=> 0 [count]=> 8))it outputs this :Array ( [0] => stdClass Object ( [term_id] => 104 [name] => new [slug] => new [term_group] => 0 [term_taxonomy_id] => 104 [taxonomy] => product_tag [description] => Hola qué tal esto es una descripción? [parent] => 0 [count] => 8 ) ) Array ( [0] => stdClass Object ( [term_id] => 104 [name] => new [slug] => new [term_group] => 0 [term_taxonomy_id] => 104 [taxonomy] => product_tag [description] => Hola qué tal esto es una descripción? [parent] => 0 [count] => 8 ) )
- 0
- 2012-11-25
- Rodrigo Sanz
-
そして、配列にカテゴリがありませんか?私は何か間違ったことをしましたか?And there's not category in the array ? Did i do something wrong?
- 0
- 2012-11-25
- Rodrigo Sanz
-
`product_tag`を使用しました.カテゴリ名が `product_category`だった可能性はありますか?コードは問題ないようです.出力から、IDが104の `new`という名前の用語が表示されます.`new`はタグの1つの名前ですか?You used `product_tag`. Is it possible that the category name was `product_category`? The code seems fine & as from the output you're getting a term named `new` with an id of 104. Is `new` the name of one of the tags?
- 0
- 2012-11-25
- Mridul Aggarwal
-
- 2017-09-02
オプション#1
この関数を使用してすべてのproduct_catを取得します
global $product; $terms = get_the_terms( $product->get_id(), 'product_cat' );
公式ドキュメント
オプション#2 IDのみが必要な場合は、次の関数を使用して、特定の製品に関連付けられているすべての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; }
Option #1
Get all product_cat's using this function
global $product; $terms = get_the_terms( $product->get_id(), 'product_cat' );
Option #2 If you only need their ids, you can get all product_category_ids associated with a specific product, using this function:
global $product; $product_cats_ids = wc_get_product_term_ids( $product->get_id(), 'product_cat' );
Extra
If you would like to print out - for instance - the categories names, you need the category term-object. This can be retrieved using
get_term_by()
.An example:
foreach( $product_cats_ids as $cat_id ) { $term = get_term_by( 'id', $cat_id, 'product_cat' ); echo $term->name; }
-
- 2012-11-27
私は自分の質問に答えました.これは私にとっての仕事です:
<?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'); ?>
MridulAggarwalにご協力いただきありがとうございます
I answered my own question, this work for me :
<?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'); ?>
Thanks Mridul Aggarwal for your help
-
正解として受け入れられるほど完全ではないと思われる場合は、少なくともMridulの回答に賛成することができます.明らかにそれはあなたを正しい軌道に乗せました.You could at least upvote Mridul's answer, if you don't think it's complete enough to be accepted as correct. Clearly it got you on the right track.
- 3
- 2012-11-27
- Johannes Pille
-
- 2020-08-19
<?php $terms = get_the_terms($product->ID, 'product_cat'); foreach ($terms as $term) { $product_cat = $term->name; echo $product_cat; break; } ?>
<?php $terms = get_the_terms($product->ID, 'product_cat'); foreach ($terms as $term) { $product_cat = $term->name; echo $product_cat; break; } ?>
-
** [編集]あなたの答え**と説明を追加してください:**なぜ**それが問題を解決できるのでしょうか?Please **[edit] your answer**, and add an explanation: **why** could that solve the problem?
- 0
- 2020-08-19
- fuxia
製品(
ID
)の1345
を持っています.その特定の製品のカテゴリ名を取得するにはどうすればよいですか?試してみる
ただし、出力:
それはどういう意味ですか?
ありがとう