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

Как сделать ссылкой значение Атрибута?

Image CMS
#1
Сейчас значения атрибутов выводятся текстом. Как сделать их ссылкой? (типа тегов).
Пример:
"Тип кожи: жирная."
"Жирная" - это ссылка на все товары со значением этого атрибута.
 

brash

Новичок
#2
я такую задачу решил с помошью плагина
advanced custom field
Если кратко - то устанавливаем плагин, в плагине создаем поле к примеру
jirnaya
В строке тип поля - выбираем таксономия
в строке Таксономия - выбираем наш атрибут наверно он будет называтся типа - pa_jirnaya
Вернуть значение - Объект термина

а в шаблоне в моем случае в файле woocomerce/single-product/meta.php

<?php $terms = get_field('jirnay'); if (($terms) != null) : ?>
<?php foreach( $terms as $term): ?>
<a href="<?php echo get_term_link( $term ); ?>"><?php echo $term->name; ?>//вот ваша ссылка
<?php endforeach; ?>
<?php endif; ?>
------
или еще проще пойти в файле woocomerce/single-product/meta.php написать
жирная и вставить такую ссылку:
вашсайт.ру
/?taxonomy=pa_kommunikatsii&term=jirnaya (помоему чтоб ссылка работала плагин advanced custom field ставить все равно придется)
вобщем вот такая конструкция должна выйти
Тип кожи:<a href="вашсайт.ру/?taxonomy=pa_kommunikatsii&term=jirnaya">Жирная</a>
-----
Если что сильно не пинайте, сам с woocomerce недавно познакомился, может все это делается проще))
 

searchingman

Гуру
Местный
#3
а в шаблоне в моем случае в файле woocomerce/single-product/meta.php
Разве в /single-product/meta.php выводятся не артикул, связанные категории и теги?
Атрибуты выводятся в \woocommerce\templates\single-product\product-attributes.php
Нужно "поработать" с этим кодом
PHP:
                if ( $attribute['is_taxonomy'] ) {

                    $values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
                    echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );

                } 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 );

                }
 
Последнее редактирование:

brash

Новичок
#4
Ну я наверно вам костыль предложил, так как мои атрибуты выводятся произвольными полями.
http://ci62906.tmweb.ru/nedvijimost/3-k-kvartira-59-m-1-5-et/ - вот тут если посмотреть, в поле коммуникации выводятся атрибуты ссылкой.

В вашем случае даже не знаю хватит ли моих знаний, если что то получится, то я напишу)
 

brash

Новичок
#5
вот нарыл, как работает вот тут посмотрите на примере атрибута блочный
http://ci62906.tmweb.ru/nedvijimost/2-k-kvartira-43-m-5-9-et/
в functions.php вставляете:

add_filter ('woocommerce_attribute', 'link_attributes', 10, 3);
function link_attributes($attributes_string, $attribute, $terms) {
global $post;
$taxonomy = get_taxonomy( $attribute['name'] );
if ( $taxonomy && ! is_wp_error( $taxonomy ) ) {
$attribute_string = '';
$terms = wp_get_post_terms( $post->ID, $taxonomy->name );
if ( !empty( $terms ) ) {
foreach ( $terms as $term ) {
if (strlen($attribute_string) > 0) {
$attribute_string .= ', ';
}
$archive_link = get_term_link( $term->slug, $attribute['name'] );
$attribute_string .= '<a href="' . $archive_link . '">'. $term->name . '</a>';
}
}
}
return '<p>'.$attribute_string.'</p>';
}
 
#7
А у меня не работает. Все атрибуты стали ссылками, однако с любой ссылки выбрасывает на главную страницу. Беда... Очень нужно, а решения нигде нет :(((