問題描述

如何在世界上檢查產品是否在 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 沒有影響。我想要有上限的條件。在 single-product 頁面上的任何解決方案?

最佳解決方案

在這種情況下,我不認為 get_categories()是最好的選擇,因為它返回一個字串,其中列出了所有類別作為錨標籤的類別,但不是很好地用於顯示類別。好的,所以你需要做的第一件事是抓住當前頁面的 product /post 物件,如果你還沒有的話:

global $post;

然後,您可以獲得產品的產品類別術語物件 (類別) 。在這裡,我將類別術語物件轉換成一個名為 $categories 的簡單陣列,這樣可以更容易地看到分配了什麼。請注意,這將返回分配給產品的所有類別,而不僅僅是當前頁面,即如果我們在/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;

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。