Intereting Posts

Отображение определенных значений атрибутов продукта на страницах категорий архивов

Я хочу показать определенные атрибуты продукта на странице категории в WooCommerce. Атрибуты будут показаны после названия продукта до краткого описания.

pa_nopeus являются pa_nopeus , pa_liito , pa_vakaus и pa_feidi . Это только числовые значения. Я просто хочу показать значения, а не имена, примерно так:

 Product Name 4 / 4 / 1 / 2 Short description 

Если эти значения не существуют в продукте, строка не будет отображаться вообще.

Я хочу добавить это в (шаблон) код, а не с помощью плагина. Я считаю, что он будет добавлен в content-product.php.

 #content-product.php start.... do_action( 'woocommerce_shop_loop_item_title' ); VALUES HERE SOMEHOW? /** * woocommerce_after_shop_loop_item_title hook. * * @hooked woocommerce_template_loop_rating - 5 * @hooked woocommerce_template_loop_price - 10 */ do_action( 'woocommerce_after_shop_loop_item_title' ); #rest of the content-product.php... 

Как я могу это достичь?

благодаря

Лучший способ сделать то, что вы ожидаете (без переопределения шаблонов), – это использовать функцию, которую мы подключаем к крюку 'woocommerce_shop_loop_item_title' .

В этом случае код ниже приводится в файле function.php вашей активной дочерней темы (или темы).

Вот код:

 // For WooCommerce below version 3.0 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 ) { // Getting the value of an attribute $attribute_value = array_shift(wc_get_product_terms( $product->id, $attribute_name)); // Displays only if attribute exist for the product if(!empty($attribute_value) || $attribute_value == '0' ){ // Updated echo $attribute_value; // Separating each number by a " / " if($key < 3) echo ' / '; } } } } 

Для woocommerce 3.0+ см .: добавление атрибутов в краткое описание в WooCommerce 3.0+

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


Или, альтернативно, вы можете использовать приведенный выше код в шаблоне content-product.php , таким образом:

 #content-product.php start.... do_action( 'woocommerce_shop_loop_item_title' ); /////////////// HERE IS THE CODE //////////////// // 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 ) { // Getting the value of an attribute $attribute_value = array_shift(wc_get_product_terms( $product->id, $attribute_name)); // Displays only if attribute exist for the product if(!empty($attribute_value) || $attribute_value == '0' ){ echo $attribute_value; // Separating each number by a " / " if($key < 3) echo ' / '; } } } /** * woocommerce_after_shop_loop_item_title hook. * * @hooked woocommerce_template_loop_rating - 5 * @hooked woocommerce_template_loop_price - 10 */ do_action( 'woocommerce_after_shop_loop_item_title' ); #rest of the content-product.php... 

Но первое решение более рекомендуется и элегантно.

Код проверен и работает