Добавление атрибута сразу за ценой ($price) в Woocommerce
Поставил перед собой задачу добавлять сразу за ценой значение определенного атрибута, в случае, если таковой выбран. Например, у меня морковка и цену я выставляю простым товаром за $term_name
Выйдет: Price + за term_name (10 грн за 100 г)
Как бы я не мучился, код у меня не выдает нужного результата, прошу подсказать, где я ошибся.
add_function( 'woocommerce_get_price_html', 'set_packaging_type_after_price', 10, 3 );
function set_packaging_type_after_price( $data, $product ) {
$targeted_taxonomy = 'czenaza'; // <== наш атрибут
// Просматриваем атрибуты
foreach( $data['attributes'] as $attribute => $term_slug ) {
$attribute_taxonomy = str_replace( 'attribute_', '', $attribute );
// Если атрибуты совпадают
if ( $attribute_taxonomy == $targeted_taxonomy ){
$czenaza = get_term_by( 'slug', $term_slug, $attribute_taxonomy )->name; // Получаем имя вариации
$czenaza = ' <span class="czenaza">'. __('за '). $czenaza .'</span></span>';
// Показываем "Цена (атрибут)" после цены товара
$data['price_html'] = str_replace( '</span></span>', '</span>' . $czenaza, $data['price_html'] );
break;
}
}
return $data;
}
Ответы (1 шт):
Автор решения: SeVlad
→ Ссылка
Как бы я не мучился, код у меня не выдает нужного результата, прошу подсказать, где я ошибся.
Везде.
Для вывода можно либо править два шаблона price.php в дочерней теме либо использовать хуки. Приблизительно так:
function my_change_product_price_display( $price ) {
$price .= '<span class="myclass">'.$addtext.'</span>';
return $price;
}
add_filter( 'woocommerce_get_price_html', 'my_change_product_price_display' ); //вывод в карточке товара
add_filter( 'woocommerce_cart_item_price', 'my_change_product_price_display' ); //вывод в корзине
Осталось только нужный $addtext получить.