Получите и отобразите изменяемый ценовой диапазон продуктов в Woocommerce 3 - PullRequest
0 голосов
/ 12 сентября 2018

Я очень новичок в WordPress и WooCommerce. Я изменяю страницу с результатами поиска двадцать семнадцати тем, чтобы она выглядела как таблица. Большинство продуктов являются переменными. Я использую код, показанный ниже, чтобы показать результаты в таблице

    <table class="search-res" style="table-layout: auto; width: 100%;">
            <tr><td>
            <?php
            if ( has_post_thumbnail()) 
                the_post_thumbnail('excerpt-thumb');        
                ?></td>
                <td>
                    <?php 
                    the_title( sprintf( '<th class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ) );
                    echo"</a></th>";
                    ?>
                </td>
                <td style="font-style:italic;font-size:small;"><?php the_excerpt(); ?></td>
            <th><?php 
                global $post;
   $product = new WC_Product($post->ID ); 
  echo wc_price($product->get_price_including_tax(1,$product->get_price()));
?></th>
            </tr>

        </table>

Проблема, с которой я сталкиваюсь, заключается в том, что здесь отображается минимальная цена продукта. Вместо этого я хочу показать диапазон цен. Кроме того, как я могу получить атрибуты рейтинга и категории продукта для отображения в таблице?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вам просто нужно использовать метод WC_Product_Variable get_price_html(), который сделает это за вас:

<?php
global $post;

// Get the WC_Product_Variable instance Object
$product = wc_get_product( $post->ID ); // Works for any product type

// Displaying the formatted "Min" - "Max" price range
echo $product->get_price_html();
?>

Протестировано и работает

0 голосов
/ 12 сентября 2018

Разобрался.Не идеальный способ сделать это, и я уверен, что есть более простой способ сделать что-то, но тем не менее, вот мой обходной путь:

 <?php
                global $post;
$parent_product=new WC_Product_Variable($post->ID);
$variations=$parent_product->get_children();
$max_price=0;
$min_price=10000;
foreach ($variations as $product){
        $single_variation=new WC_Product_Variation($product);
        if($single_variation->price > $max_price){
            $max_price=$single_variation->price;
        }
    if($single_variation->price < $min_price){
            $min_price=$single_variation->price;
        }

}
                    echo get_woocommerce_currency_symbol().$min_price.'-'.get_woocommerce_currency_symbol().$max_price; 
                ?>
...