Intereting Posts
mobile.de поиск api Авторизация fehler mit PHP curl Загрузка файла codeigniter с помощью класса verot_upload и dropzone.js Обновление нескольких записей MySQL с использованием одного вызова mysqli_query в PHP Yii :: app () -> user-> isAdmin () неправильно работает на странице макета mysql (i) _real_escape_string, на что можно положиться? Как я могу заставить PHP отображать ошибку вместо того, чтобы дать мне 500 Internal Server Error Обрезаемая фатальная ошибка: объект класса mysqli_stmt не может быть преобразован в строку Включение файлов из включенного пути не работает должным образом Проверка строки для недопустимых символов с использованием регулярного выражения Чтение XML-данных в PHP, простое База данных PHP Недопустимый аргумент для foreach () PDO fetchAll () первичный ключ как ключ группы массива Ошибка PHPMailer с вызовом неопределенного метода PHPMailer :: SetFrom () PHP setcookie () не работает Symfony 2 присоединяется к неработающей доктрине и MySQL

Добавить атрибуты в краткое описание в WooCommerce 3.0+

Я хотел бы вставить атрибуты из всех продуктов в их краткое описание, чтобы клиент мог открыть quickview и проверить эти атрибуты.

Я уже пробовал этот ответ: отображать определенные значения атрибутов продукта на страницах категорий архивов

Также этот: Woocommerce – отображать отдельные атрибуты продукта с короткими кодами в Frontend

И я не смог заставить его работать. Я думаю, это должно быть потому, что WooCommerce обновилась до версии 3.0+

Кто-нибудь знает способ сделать это?

благодаря

Обновление 3 (Автоматизация для простых продуктов, совместимость с WC)

// 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>'; } 

Обновление только для версии WooCommerce версии 3.0+.

 // 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 ' / '; } } } } 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Теперь он должен работать в WC 3.0+


Связанный с этим кодом ответа: отображение определенных значений атрибутов продукта на страницах категорий архивов

чтобы построить ответ LoicTheAttec:

Его код работает только в том случае, если вы предопределили атрибуты в WP backend в разделе Products -> Attributes. Если вы работаете с индивидуальными (настраиваемыми) атрибутами продукта, которые были настроены на странице продукта, wc_get_product_terms () ничего не вернет. Вы можете распознавать предопределенные атрибуты префиксом «pa_», они хранятся в таблице «woocommerce_attribute_taxonomies».

Чтобы показать эти индивидуальные атрибуты так же, как предлагаемый LoicTheAztec, используйте этот код:

 add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20); function custom_attributes_display() { // Just for product category archive pages if(is_product_category()) { global $product; // get all product attributes $attributes = $product->get_attributes(); // the array of attributes you want to display (shown in same order) $show_attributes = array('My Attribute A', 'Another Attribute B'); foreach($show_attributes as $key => $show_attribute) { foreach($attributes as $attribute) { // check if current attribute is among the ones to be shown if ($attribute->get_name() == $show_attribute) { echo $attribute->get_options()[0]; // seperate attributes by "/" if (count($show_attributes) > 1) echo '/'; unset($show_attributes[$key]); break; } } } } } не add_action( 'woocommerce_shop_loop_item_title', 'custom_attributes_display', 20); function custom_attributes_display() { // Just for product category archive pages if(is_product_category()) { global $product; // get all product attributes $attributes = $product->get_attributes(); // the array of attributes you want to display (shown in same order) $show_attributes = array('My Attribute A', 'Another Attribute B'); foreach($show_attributes as $key => $show_attribute) { foreach($attributes as $attribute) { // check if current attribute is among the ones to be shown if ($attribute->get_name() == $show_attribute) { echo $attribute->get_options()[0]; // seperate attributes by "/" if (count($show_attributes) > 1) echo '/'; unset($show_attributes[$key]); break; } } } } } 

как я могу показать метку атрибута с этим кодом?

// Совместимость для WC 3+ и усовершенствований автоматизации 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>'; 

}