olegatorius
@olegatorius
junior

Как изменить вид цены в карточке продукта?

Подскажите пожалуйста как в Wordpress(Woocoomerce) поставить после цены "+" и при выборе размера напротив показывалась его цена? Мне нужно сделать так как на этом примере : <a href="http://joxi.ru/p27nXWBTKoqVYm">Пример</a>
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 1
olegatorius
@olegatorius Автор вопроса
junior
Этот код у меня заработал...

//price
add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);

function custom_variation_price( $price, $product ) {
$price = '';

if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) $price .= '' . _x('From', 'min_price', 'woocommerce') . ' ';
$price .= woocommerce_price($product->get_price());
if ( $product->max_variation_price && $product->max_variation_price !== $product->min_variation_price ) {
$price .= ' ' . _x('to' ,'max_price' , 'woocommerce') . ' ';

$price .= woocommerce_price($product->max_variation_price);
}

return $price;
}

// price below variatian product
add_filter( 'woocommerce_variation_option_name', 'display_price_in_variation_option_name' );
function display_price_in_variation_option_name( $term ) {
 
global $wpdb, $product;
if ( empty( $term ) ) return $term;
 
if ( empty( $product->id ) ) return $term;
$result = $wpdb->get_col( "SELECT slug FROM {$wpdb->prefix}terms WHERE name = '$term'" );
$term_slug = ( !empty( $result ) ) ? $result[0] : $term;
$query = "SELECT postmeta.post_id AS product_id
 
FROM {$wpdb->prefix}postmeta AS postmeta
 
LEFT JOIN {$wpdb->prefix}posts AS products ON ( products.ID = postmeta.post_id )
 
WHERE postmeta.meta_key LIKE 'attribute_%'
 
AND postmeta.meta_value = '$term_slug'
 
AND products.post_parent = $product->id";
$variation_id = $wpdb->get_col( $query );
$parent = wp_get_post_parent_id( $variation_id[0] );
if ( $parent > 0 ) {
 
$_product = new WC_Product_Variation( $variation_id[0] );
 
return $term . ' (' . wp_kses( woocommerce_price( $_product->get_price() ), array() ) . ')';
 
}
 
return $term;
}

// выводим цену вариативного товара
 
add_filter('woocommerce_available_variation', function ($value, $object = null, $variation = null) {
 
if ($value['price_html'] == '') {
 
$value['price_html'] = '<span class="price">' . $variation->get_price_html() . '</span>';
 
}
 
return $value;
 
}, 10, 3);


Вот результат: <a href="http://joxi.ru/Q2KRa59ULL416m">1</a>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы