Задать вопрос
@alexiusgrey

Как правильно вызвать в корзинке значение мета-поля товара?

Мне нужно, чтобы можно было от определенного количества товара подставлять ему другую цену.
От 50 штук чтобы цена прописывалась другая. Хочу брать значение этой новой цены из своего добавленного числового мета-поля.

Есть сниппет, который делает очень похожую вещь- изменение стоимости товара от нужного количества штук, но на попроцентную скидку. Работает отлично.
add_action( 'woocommerce_before_calculate_totals', 'phpsof_quantity_based_pricing', 9999 );
 
function phpsof_quantity_based_pricing( $cart ) {
 
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
 
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;  
    
 
    // Define discount rules and thresholds
    $threshold1 = 50; // Change price if items > 50
    $discount1 = 0.05; // Reduce unit price by 5%
    $threshold2 = 100; // Change price if items > 100
    $discount2 = 0.1; // Reduce unit price by 10%
 
    foreach ( $cart->get_cart() as $cart_item_key => $cart_item ) {
      if ( $cart_item['quantity'] >= $threshold1 && $cart_item['quantity'] < $threshold2 ) {
         $price = round( $cart_item['data']->get_price() * ( 1 - $discount1), 2 );
         $cart_item['data']->set_price( $price );
      } elseif ( $cart_item['quantity'] >= $threshold2 ) {
         $price = round( $cart_item['data']->get_price() * ( 1 - $discount2 ), 2 );
         $cart_item['data']->set_price( $price );
      }    
    }    
 }

Я хотел попробовать заменить round( $cart_item['data']->get_price() * ( 1 - $discount1), 2 ) на свое мета-поле $cart_item['data']->get_meta( '_opt_price', true )
Это мета-поле у товара, но в корзинке надо обращаься не к $product, а к $cart_item['data'], но так не сработало.
Как к мета-полю товара правильно обратиться из корзинки?

Я первым делом подумал, что как-то непраильно добавил мета-поле, но сравнил с существующими в админке числовыми плями, типа _stock, тоже $cart_item['data']->get_meta( '_stock', true ) не сработало.

Как правильно вызвать значение мета-поля?

Я очень рад за тех, кто использует кряковые плагины и "не парится", а мне вот очень бы хотелось разобраться с мета-полем.
  • Вопрос задан
  • 17 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

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