2017-10-05 67 views
1

在WooCommerce中,我嘗試將產品屬性輸出到歸檔頁面。我已經使用下面的代碼成功輸出了它們,但我無法單獨設計它們的樣式。使用CSS輸出Woocommerce產品屬性以歸檔頁面和樣式

add_action('woocommerce_after_shop_loop_item_title', 'custom_display_post_meta', 9); 
function custom_display_post_meta() { 
    global $product; 
    $attr = array('pa_pg', 'pa_vg', 'pa_nc'); 
    foreach ($attr as $attribute) { 
     $values = wc_get_product_terms($product->id, $attribute, array('fields' => 'names')); 
     echo '<div class="new-product-meta">'; 
     echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $attribute, $values); 
     echo '</div>'; 
    } 
} 

我需要每一個這些圍繞<div>包裝一個單獨的類的名稱,如「pa_pg」,「pa_vg」,「pa_nc」。

例如我得到3 <div>與相同的類名稱。

對此有任何幫助嗎?

+0

你有上課嗎?爲什麼不使用'$ attribute'變量作爲類名呢? – ferdynator

回答

0

簡單地改變

echo '<div class="new-product-meta">'; 

echo '<div class="new-product-meta '.$attribute.'">'; 

給了我,我需要的結果。我應該指定我使用woocommerce 2.6.4。另外,有人編輯了原始問題的一部分,所以沒有意義。

+0

此外,剛剛測試了我的代碼,它完美適用於WooCommerce版本2.6+ – LoicTheAztec

0

首先,在WooCommerce中3+ WC_Product屬性不能直接訪問。所以我已經讓你的代碼兼容。

這是非常容易的屬性分類蛞蝓添加到每個班級:

add_action('woocommerce_after_shop_loop_item_title', 'custom_display_post_meta', 9); 
function custom_display_post_meta() { 
    global $product; 

    // Get the Product ID - WC 3+ compatibility 
    $product_id = method_exists($product, 'get_id') ? $product->get_id() : $product->id; 

    $product_attributes = array('pa_pg', 'pa_vg', 'pa_nc'); 

    foreach ($product_attributes as $taxonomy) { 
     $values = wc_get_product_terms($product_id, $taxonomy, array('fields' => 'names')); 

     // => HERE we add the taxonomy name to the <div> class 
     echo '<div class="new-product-meta '.$taxonomy.'">'; 
     echo apply_filters('woocommerce_attribute', wpautop(wptexturize(implode(', ', $values))), $taxonomy, $values); 
     echo '</div>'; 
    } 
} 

代碼放在您的活動子主題(或主題)的function.php文件或也以任何插件文件。

測試和工程

相關問題