Добавить единицу количества в количестве-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
.