Задать вопрос
Ответы пользователя по тегу WooСommerce
  • Как изменить вид цены в карточке продукта?

    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>
    Ответ написан
    Комментировать