問題描述
我想將所有產(chǎn)品的屬性插入到它們的簡短描述中,以便客戶可以打開快速查看并檢查這些屬性.
我已經(jīng)嘗試過這個答案:顯示特定的產(chǎn)品屬性值在檔案類別頁面上
還有這個:Woocommerce - 顯示單個產(chǎn)品屬性(s) 在前端使用短代碼
我無法讓它發(fā)揮作用.我想應(yīng)該是因為 WooCommerce 更新到了 3.0+ 版
有人知道制作方法嗎?
謝謝
Update 3(簡單產(chǎn)品的自動化,WC兼容性)
//WC 3+ 和自動化增強的兼容性add_action('woocommerce_shop_loop_item_title', 'custom_attributes_display', 20);函數(shù) custom_attributes_display(){全球$產(chǎn)品;//只針對簡單的產(chǎn)品if(!$product->is_type('simple')) 返回;$loop_count = 0;echo '';//獲取屬性分類 slugs(現(xiàn)已更新和動態(tài))$attributes_taxonomy = $product->get_attributes();//或者設(shè)置一個分類slug(鍵)和名稱(值)的索引數(shù)組來選擇哪些,例如://$attributes_taxonomy = array('pa_nopeus' => 'Nopeus', 'pa_liito' => 'Liito, 'pa_vakaus' => 'Vaukaus' );foreach( $attributes_taxonomy as $taxonomy => $attribute ) {//獲取屬性的術(shù)語名稱(如果有多個值,則在逗號分隔的字符串中設(shè)置)$attribute_terms = wp_get_post_terms( get_the_id(), $taxonomy, array( 'fields' => 'names' ) );$terms_string = implode(',', $attribute_terms);//僅當(dāng)產(chǎn)品的屬性存在時才顯示if( count( $attribute_terms ) > 0 ){//更新回聲 $terms_string;//用|"分隔每個數(shù)字(現(xiàn)在更新和動態(tài))$attr_count = count( $attributes_taxonomy );$loop_count++;if( $loop_count < $attr_count && $attr_count > 1 ) echo ' |';}}回聲'</div>';}<小時>
更新僅適用于 WooCommerce 3.0+ 版.
//適用于 WooCommerce 3.0+ 版(僅限)add_action('woocommerce_shop_loop_item_title', 'custom_attributes_display', 20);函數(shù) custom_attributes_display(){//僅用于產(chǎn)品類別檔案頁面如果(is_product_category()){全球$產(chǎn)品;//屬性名稱數(shù)組$attribute_names = array('pa_nopeus', 'pa_liito', 'pa_vakaus', 'pa_feidi');foreach( $attribute_names as $key => $attribute_name ) {//對于 WooCommerce 3.0+ 版$product_id = $product->get_id();//廁所 3.0+//獲取屬性的值(適用于 WC 3.0+)$wc_term = wc_get_product_terms( $product_id, $attribute_name);$attribute_value = array_shift($wc_term);//僅當(dāng)產(chǎn)品的屬性存在時才顯示if(!empty($attribute_value) || '0' == $attribute_value ){//更新回聲 $attribute_value;//用/"分隔每個數(shù)字if($key < 3) echo '/';}}}}
代碼位于活動子主題(或主題)的 function.php 文件或任何插件文件中.
它現(xiàn)在應(yīng)該可以在 WC 3.0+ 中運行
<小時>與此答案相關(guān)的代碼:Display檔案類別頁面上的特定產(chǎn)品屬性值
I would like to insert the attributes from all products to their short description, so the client can open a quickview and check this attributes.
I already tried this answer: Display specific product attribute values on archives category pages
Also this one: Woocommerce - Display single product attribute(s) with shortcodes in Frontend
And I wasn't able to make it work. I think it should be because WooCommerce got updated to version 3.0+
Does anyone know a way to make it?
Thanks
解決方案 Update 3 ( Automation for simple products, WC compatibility )
// Compatibility for WC 3+ and automation enhancements
add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20 );
function custom_attributes_display(){
global $product;
// Just for simple products
if( ! $product->is_type( 'simple' ) ) return;
$loop_count = 0;
echo '<div>';
// Get the attributes taxonomy slugs (Updated and dynamic now)
$attributes_taxonomy = $product->get_attributes();
// OR set an indexed array of taxonomy slug (key) and name (value) to chose which ones, like:
// $attributes_taxonomy = array('pa_nopeus' => 'Nopeus', 'pa_liito' => 'Liito, 'pa_vakaus' => 'Vaukaus' );
foreach( $attributes_taxonomy as $taxonomy => $attribute ) {
// Getting the term names of an attribute (set in a coma separated string if many values)
$attribute_terms = wp_get_post_terms( get_the_id(), $taxonomy, array( 'fields' => 'names' ) );
$terms_string = implode( ',', $attribute_terms );
// Displays only if attribute exist for the product
if( count( $attribute_terms ) > 0 ){ // Updated
echo $terms_string;
// Separating each number by a " | " (Updated and dynamic now)
$attr_count = count( $attributes_taxonomy );
$loop_count++;
if( $loop_count < $attr_count && $attr_count > 1 ) echo ' | ';
}
}
echo '</div>';
}
Update For WooCommerce version 3.0+ only.
// For WooCommerce Version 3.0+ (only)
add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20 );
function custom_attributes_display(){
// Just for product category archives pages
if(is_product_category()){
global $product;
// the array of attributes names
$attribute_names = array('pa_nopeus', 'pa_liito', 'pa_vakaus', 'pa_feidi');
foreach( $attribute_names as $key => $attribute_name ) {
// For WooCommerce version 3.0+
$product_id = $product->get_id(); // WC 3.0+
// Getting the value of an attribute (OK for WC 3.0+)
$wc_term = wc_get_product_terms( $product_id, $attribute_name);
$attribute_value = array_shift($wc_term);
// Displays only if attribute exist for the product
if(!empty($attribute_value) || '0' == $attribute_value ){ // Updated
echo $attribute_value;
// Separating each number by a " / "
if($key < 3) echo ' / ';
}
}
}
}
Code goes in function.php file of your active child theme (or theme) or also in any plugin file.
It should work now in WC 3.0+
Related to this Answer code: Display specific product attribute values on archives category pages
這篇關(guān)于在 WooCommerce 3.0+ 中為簡短描述添加屬性的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!