2016-06-30 70 views
0

試圖顯示我在產品下注冊的自定義分類標準「w_label」。然而,當我試着用下面的代碼來顯示它:WooCommerce顯示檔案中的自定義分類標準

register_taxonomy('w_label', array('product'), 
    array( 
     'hierarchical' => true, 
     'label' => 'Product Labels', 
     'singular_label' => 'Product Label', 
     'rewrite' => true, 
     'supports' => array('excerpt', 'thumbnail') 

    ) 
); 

function w_label_name() { 
    global $post; 
    $terms = get_the_terms($post->ID, 'w_label'); 
    foreach ($terms as $term){ 
     echo '<div class="label">' . $term->name . '</div>'; 
    } 

} 
add_action('woocommerce_before_shop_loop_item_title', 'w_label_name', 2); 

我不斷收到「警告:的foreach提供了無效的參數()」

不知道我已經錯過了。如果我將此代碼用於默認的WooCommerce類別,但不適用於我在此處註冊的自定義分類。

回答

3

第一次嘗試,看看是否有不符合$terms = get_the_terms($post->ID, 'w_label');嘗試在你的函數這是一個問題,顯示$terms

function w_label_name() { 
    global $post; 
    $terms = get_the_terms($post->ID, 'w_label'); 
    echo '<div class="label">' . var_dump($terms) . '</div>'; 
} 

然後還嘗試get_terms('w_label');代替get_the_terms($post->ID, 'w_label');和回聲也var_dump($terms)與看什麼你越來越多。

如果你得到了什麼,問題來自$term->name和方式得到$terms。然後,你可以試試這個(沒有任何擔保,因爲未經測試)

function w_label_name() { 
    global $post; 
    $terms = get_terms('w_label'); 
    if (! empty($terms) && ! is_wp_error($terms)){ 
     foreach ($terms as $term) { 
      echo '<div class="label">' . $term->name . '</div>'; 
     } 
    } 
} 
add_action('woocommerce_before_shop_loop_item_title', 'w_label_name', 10); 
+0

嘿loic,我得到一個wpobject錯誤。經過一些測試後,它導致我更改爲get_terms方法,因爲我爲此用例創建了此自定義分類。 – mark5

1

這是我的代碼是正確顯示標籤的產品循環:

function w_label_name() { 
    global $post; 
    $taxonomyName = "label_name"; 
    terms = get_terms($taxonomyName, array('hide_empty' => 0)); 
    echo '<div class="label"><ul>'; 
     foreach ($terms as $term) { 
      ?><li><?php echo $term->name; ?></li><?php 
     } 
    echo '</ul></div>'; 
} 
add_action('woocommerce_before_shop_loop_item_title', 'w_label_name', 2); 

參見 what is the difference between get_terms and get_the_terms in WordPress ? 爲get_terms vs get_the_terms方法

相關問題