Как вывести в каталоге Woocommerce вариации товара с ценой и корзиной напротив для каждой?

Варианты фасовки выводятся со своей ценой и кнопкой купить.
Как реализовать такой вывод вариаций?
Вот пример реализации у petshop.ru
5d1c908e9be47195704563.png
  • Вопрос задан
  • 5984 просмотра
Решения вопроса 1
DrZhmurge
@DrZhmurge Автор вопроса
В файле woocomerce/template/content-product.php после do_action( 'woocommerce_after_shop_loop_item_title' );
нужно вставить следующий код:
$args = array(
  'post_type'     => 'product_variation',
  'post_status'   => array( 'private', 'publish' ),
  'numberposts'   => -1,
  'orderby'       => 'menu_order',
  'order'         => 'ASC',
  'post_parent'   => get_the_ID() // get parent post-ID
);
$variations = get_posts( $args ); 
 
foreach ( $variations as $variation ) {
  
  // get variation ID
  $variation_ID = $variation->ID;
 
  // get variations meta
  $product_variation = new WC_Product_Variation( $variation_ID );
 
  // get variation featured image
  $variation_image = $product_variation->get_image();
 
  // get variation price
  $variation_price = $product_variation->get_price_html();
       //get variation name
  $variation_name = $product_variation->get_variation_attributes();
echo "<p class='product_price' >";
if ( $variation_name [ 'attribute_pa_СЛАГ_АТРИБУТА' ] ) {
    $fasovka = [ 'attribute_pa_СЛАГ_АТРИБУТА' => $variation_name [ 'attribute_pa_СЛАГ_АТРИБУТА'] ];
    echo wc_get_formatted_variation ( $fasovka );
}
echo ($variation_price);
echo "</p>";
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ivan_zhuck
@ivan_zhuck
Сначала нужно получить все вариации товара, если они есть, а далее дело техники:

global $product;
// если товар вариантивный
if ($product->is_type( 'variable' )) 
{
    //получаем варианты
    $available_variations = $product->get_available_variations();
    foreach ($available_variations as $key => $value) 
    { 
        /**
         * Тут выводишь то что должно быть в списке вариаций.
         * Ссылку на добавление вариации товара в корзину в самом простом случае
         * можно сделать так: http://host.com/?add-to-cart=xxx, где xxx - это ID варианта
         **/
    }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы