• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Отображение описания свойств атрибутов

Dokole

Новичок
В стандартных темах не отображаются описание атрибутов
Перекопал десяток тем как минимум
Если есть у кого то на примете, подскажите, пожалуйста

Описаниеwp показывает следующее
"Описание по умолчанию не отображается, однако некоторые темы могут его показывать."
 

Tanhuxa

Форумчанин
У меня тот же вопрос. Кто может помочь отобразить описание атрибутов? :unsure:
 

Tanhuxa

Форумчанин
Похоже, нашла ответ.
Только, признаюсь, не знаю, куда его нужно вписать. Кто может помочь разобраться с кодом?
 

Tanhuxa

Форумчанин
Ну подскажите, хоть как называется это описание в коде и где его искать!!! :cry: :cry: :cry:
 

searchingman

Гуру
Местный
Если речь про вывод описания атрибутов в карточке товара, то решение примерно такое.
Для вывода атрибутов используется шаблон \wp-content\plugins\woocommerce\templates\single-product\product-attributes.php. Копируем его в свою тему и делаем небольшие правки.
Следующий код
PHP:
$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
                    echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
заменяем на
PHP:
$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) );
                    foreach ($values as $key => $value) {
                        echo  $value->name;
                        if (!empty($value->description))
                        echo  '<br>'.$value->description.'<br>';
                    }
На примере темы StoreFront :
- было http://take.ms/S9gLu
- стало http://take.ms/6Sp34
 

Tanhuxa

Форумчанин
Если речь про вывод описания атрибутов в карточке товара, то решение примерно такое.
Для вывода атрибутов используется шаблон \wp-content\plugins\woocommerce\templates\single-product\product-attributes.php. Копируем его в свою тему и делаем небольшие правки.
Следующий код
PHP:
$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
                    echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
заменяем на
PHP:
$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) );
                    foreach ($values as $key => $value) {
                        echo  $value->name;
                        if (!empty($value->description))
                        echo  '<br>'.$value->description.'<br>';
                    }
На примере темы StoreFront :
- было http://take.ms/S9gLu
- стало http://take.ms/6Sp34
Что-то ничего не получается :(
Вот код, который получился:
<?php
/**
* Product attributes
*
* Used by list_attributes() in the products class
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 2.1.3
*/

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

$has_row = false;
$alt = 1;
$attributes = $product->get_attributes();

ob_start();

?>
<table class="shop_attributes">

<?php if ( $product->enable_dimensions_display() ) : ?>

<?php if ( $product->has_weight() ) : $has_row = true; ?>
<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
<th><?php _e( 'Weight', 'woocommerce' ) ?></th>
<td class="product_weight"><?php echo $product->get_weight() . ' ' . esc_attr( get_option( 'woocommerce_weight_unit' ) ); ?></td>
</tr>
<?php endif; ?>

<?php if ( $product->has_dimensions() ) : $has_row = true; ?>
<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
<th><?php _e( 'Dimensions', 'woocommerce' ) ?></th>
<td class="product_dimensions"><?php echo $product->get_dimensions(); ?></td>
</tr>
<?php endif; ?>

<?php endif; ?>

<?php foreach ( $attributes as $attribute ) :
if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) ) {
continue;
} else {
$has_row = true;
}
?>
<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
<th><?php echo wc_attribute_label( $attribute['name'] ); ?></th>
<td><?php
if ( $attribute['is_taxonomy'] ) {

$values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'all' ) );
foreach ($values as $key => $value) {
echo $value->name;
if (!empty($value->description))
echo '<br>'.$value->description.'<br>';
}

} else {

// Convert pipes to commas and display values
$values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );

}
?></td>
</tr>
<?php endforeach; ?>

</table>
<?php
if ( $has_row ) {
echo ob_get_clean();
} else {
ob_end_clean();
}
Что-то еще надо изменить?
 

mulch

Форумчанин
Коллеги, спустя год возник похожий вопрос. А как вывести (внимание) Описание ПОДабрибута на странице, отображающей все товары, относящиеся к данному ПОДатрибуту?
Например: на странице "Жемжуг культивированный" сначало должно быть описание этого жемчуга, а потом все, что с ним сделано. Пока описание никак вотнкуть не получается. Даже не понимаю откуда копать?
Само описание у ПОДатрибута "Жемчуг культивированный" атрибута "Материал" вбито.
Заранее благодарен за подсказку.
 

mulch

Форумчанин
Пол дня "в библиотеке", и вопрос почти решен. :)
Для решения этой моей задачи надо было:
1. сдублировать файл archive-product.php из WooCommerce по правилам в свою дочернюю тему.
2. далее в нем перед строкой "do_action( 'woocommerce_before_shop_loop' );" вставить строку "$str=term_description(); if(!empty($str)){echo apply_filters("the_content", $str);} (инфо отсюда, респект и уважуха коллеге).

Вот еще 1 час пытался с этому стрингу привязать '<p class="myblog">', но ни фига не получается.
команда типа "?><script> $("p").addClass("myblog"); </script> <?php" результата также не дает вообще никакого.
Как слепить стринг php и html?
 

mulch

Форумчанин
Кому интересно - усовершенствовал вывод описаний любой таксономии (категории, метки и любые свои вида "pa_***".
Для этого можно файл archive-product.php из WooCommerce не трогать.
Достаточно в functions.php дочерней темы добавить следующее
1. функцию
function my_all_description() {
if ( is_tax( array( 'product_cat', 'product_tag', 'pa_material' ) ) && 0 === absint( get_query_var( 'paged' ) ) ) {
$description = wc_format_content( term_description() );
if ( $description ) {
echo "<p class=\"myblog\"$description";
} } }

Далее в style.css дочерней темы раскрашиваем класс myblog или любой здесь вами используемый

2. перехучить ряд функций так
add_action( 'init', 'custom_remove', 10 ); //важно - перехучить в конце построения списка функций - на функции init
function custom_remove () {
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10); //убираем стандартный вывод описаний категорий и меток
//add_action( 'woocommerce_after_shop_loop', 'my_all_description', 100); //описания категорий и т.п. ПОД товарами - для роботов только - если надо
add_action( 'woocommerce_archive_description', 'my_all_description', 10); //свои описания таксономий ПЕРЕД товарами
}

И начинающим веб-мастерам - рекомендация - Внимательней с синтаксисом. ОЧЕНЬ много проблем и неработающих функций из-за лишних пробелов, отсутствия точек конкатенации, " или ', неправильно расставленных скобок и т.п.
 
Последнее редактирование:

Яков

Новичок
В стандартных темах не отображаются описание атрибутов
Перекопал десяток тем как минимум
Если есть у кого то на примете, подскажите, пожалуйста

Описаниеwp показывает следующее
"Описание по умолчанию не отображается, однако некоторые темы могут его показывать."
Как решили задачу???
 

garmoni

Форумчанин
Rich Text Tags, Categories, and Taxonomies
Что это значит?
Получилось вывести описание атрибута, но выводится только тот который выбран, мне нужно чтобы выводились все описания атрибута в независимости от того выбран вариант или нет, так же как название атрибута.
 
Последнее редактирование:
Сверху Снизу