Добавить единицу количества в количестве-input.php для Woocommerce

У меня есть настраиваемое поле woocommerce_product_rate для продукта woocommerce, предназначенного для добавления после поля ввода количества, поэтому вместо простого отображения, например, "10", он может отображать "10 бананов". Я пытаюсь получить идентификатор продукта в количестве-input.php, но у меня возникли трудности. Я попытался получить к нему доступ через глобальный "$product", используя $product->get_the_id(), но это выдает ошибку php. Попытка получить доступ к $post global тоже не работает.

/**
* Product quantity inputs
*/

global $product;
$id = $product->get_id();
$unit = get_field('woocommerce_product_rate', $id);
<?php if( $unit !== '') {echo $unit . " ";} ?>

Буду очень признателен за любые предложения о том, как обойти эту проблему, спасибо.

2 ответа

Direct global $product or global $post won't work in global templates. You would need to pass product id as a parameter from woocommerce/cart/cart.php file, where it is adding the filter:

$product_quantity = woocommerce_quantity_input( array(
                                'input_name'   => "cart[{$cart_item_key}][qty]",
                                'input_value'  => $cart_item['quantity'],
                                'max_value'    => $_product->get_max_purchase_quantity(),
                                'min_value'    => '0',
                                'product_name' => $_product->get_name(),
                                'product_id' => $product_id
                            ), $_product, false );

echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item );

And then product id would be accessible the in global template, In your case woocommerce/cart/quantity-input.php you can access product id using $args['product_id']

Я обнаружил, что вы можете изменить аргументы ввода количества, используя фильтр woocommerce_quantity_input_args:

      <?php 

add_filter("woocommerce_quantity_input_args", function ($args, $product) {
    if (!empty($product)) {
        $args["product_id"] = $product->get_id();
    }
    return $args;
}, 10, 2);

После этого у вас должно быть $args["product_id"]определяется даже в корзине при использовании файла шаблона quantity-input.php.

Другие вопросы по тегам