Если продукт вариации, тогда выполнить условие иначе, если просто, тогда выполнить другое условие - PullRequest
1 голос
/ 15 октября 2019
function wooprice(){
    global $product;
    // 1 Get product varations
    $product_variations = $product->get_available_variations();

    // 2 Get one variation id of a product
    $variation_product_id = $product_variations [0]['variation_id'];

    // 3 Create the product object
    $variation_product = new WC_Product_Variation( $variation_product_id );

    if ($product->is_type( 'variable' )) :
          if( $variation_product ->sale_price !=0 ) :
            echo $variation_product ->sale_price;

          else :
            echo $variation_product ->regular_price;
          endif;

    else :
      echo wc_price($product->get_price());
    endif;

}

Я использую эту функцию в price.php в моей теме. enter image description here

Это хорошо работает, если продукты являются переменными, но дает сбой, когда продукт простой.

Выдает фатальную ошибку, если продукт простой:

Fatal error: Uncaught Error: Call to undefined method WC_Product_Simple::get_available_variations() in /home3/

Я думаю, это нужно исправить:

else :
 echo wc_price($product->get_price());

Ответы [ 2 ]

1 голос
/ 16 октября 2019
function wooprice() {

    global $product;


    if ($product->is_type('variable')) :

        // 1 Get product varations
        $product_variations = $product->get_available_variations();

        // 2 Get one variation id of a product
        $variation_product_id = $product_variations [0]['variation_id'];

        // 3 Create the product object
        $variation_product = new WC_Product_Variation($variation_product_id);

        if ($variation_product->sale_price != 0) :
            echo $variation_product->sale_price;

        else :
            echo $variation_product->regular_price;
        endif;

    else :
        echo $product->get_price();
    endif;
}

Попробуйте, я сделал некоторые изменения в вашем коде

1 голос
/ 15 октября 2019

Вам нужно переместить ваши шаги 1, 2 и 3 в блок if

function wooprice(){
    global $product;
    if ($product->is_type( 'variable' )) :
          // 1 Get product varations
         $product_variations = $product->get_available_variations();

         // 2 Get one variation id of a product
         $variation_product_id = $product_variations [0]['variation_id'];

         // 3 Create the product object
         $variation_product = new WC_Product_Variation( $variation_product_id );


          if( $variation_product ->sale_price !=0 ) :
            echo $variation_product ->sale_price;

          else :
            echo $variation_product ->regular_price;
          endif;

    else :
      echo wc_price($product->get_price());
    endif;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...