製品が single-product.php の特定の製品カテゴリに含まれているかどうかをどのようにして確認できますか?
<?php if (is_product_category('audio')) {
echo 'In audio';
woocommerce_get_template_part( 'content', 'single-product' );
} elseif (is_product_category('elektro')) {
echo 'In elektro';
woocommerce_get_template_part( 'content', 'single-product' );
} else {
echo 'some blabla'; } ?>
is_product_category( 'slug') は single-product.php には影響しません。上の条件式が欲しいのですが。単一製品ページでこれを解決する方法はありますか?
私はget_categories()
があなたにとって最良の選択肢だとは思いません。なぜなら、それはアンカータグとしてリストされたすべてのカテゴリを含む文字列を返すためです。さて、あなたがそれをまだ持っていないなら、あなたがする必要がある最初の事は現在のページのためにproduct/postオブジェクトをつかむことです:
global $post;
それからあなたは製品の製品カテゴリ用語オブジェクト(カテゴリ)を得ることができます。ここでは、カテゴリタームオブジェクトを$categories
という名前の単純な配列に変換しているので、どのスラッグが割り当てられているかがわかりやすくなります。現在のページのカテゴリだけでなく、商品に割り当てられた all カテゴリが返されることに注意してください。つまり、/shop/audio/funzo/
にアクセスしている場合は、次のようになります。
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;
次に、カテゴリがリストにあるかどうかを確認するだけです。
if ( in_array( 'audio', $categories ) ) { // do something
すべてを一緒に入れて:
<?php
global $post;
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;
if ( in_array( 'audio', $categories ) ) {
echo 'In audio';
woocommerce_get_template_part( 'content', 'single-product' );
} elseif ( in_array( 'elektro', $categories ) ) {
echo 'In elektro';
woocommerce_get_template_part( 'content', 'single-product' );
} else {
echo 'some blabla';
}
うまくいけば、これはあなたが探していたものであり、あなたの質問に答えます。
この場合は has_term
が機能するはずです。
if ( has_term( 'audio', 'product_cat' ) ) {
echo 'In audio';
woocommerce_get_template_part( 'content', 'single-product' );
} elseif ( has_term( 'elektro', 'product_cat' ) ) {
echo 'In elektro';
woocommerce_get_template_part( 'content', 'single-product' );
} else {
echo 'some blabla';
}
各カテゴリで同じことをしたいのであれば、たくさんのelseifチェックでコードを雑然とさせるのではなく、配列を呼び出すことによってオプションのリストを調べることができます。
if( has_term( array( 'laptop', 'fridge', 'hats', 'magic wand' ), 'product_cat' ) ) :
// Do stuff here
else :
// Do some other stuff
endif;
これは昔のことですが、念のためまだ人々がWooThemesを単純な解決策として見ているのです。
if ( is_product() && has_term( 'your_category', 'product_cat' ) ) {
//do code
}
* 'your_category'をあなたが使っているものに変更してください。
これはドキュメントへのリンクです: https://docs.woothemes.com/document/remov-product-content-based-on-category/
WC_Productクラスのget_categories()
関数を使ってみましょう。
ドキュメントへのリンクは ここ にあります。
基本的にページのループ内で、商品に関連するカテゴリを返す関数を呼び出します。