如何获取变体的库存数量 woocommerce
How get variation's stock quantity woocommerce
我正在为 wordpress 和 woocommerce 开发一个主题。
我需要展示变体的库存。
<p class="stock-m13"><?php echo $product->get_stock_quantity(); ?></p>
(此处:How to get the stock quantity of an article from woocommerce?)但此代码只显示全球库存数量,而不是每个变化数量。
我需要另一个函数来获取变化量吗?
或者可能是我的代码没有完成(我认为是因为我使用了二十十五个主题,显示了变化数量)?
我试着用这个获得最大数量:
<?php
foreach ($product->get_available_variations() as $key) {
echo $key['max_qty'] .'<br/>';
}
?>
我明白了,但我不知道这在股票下跌时是否有用。
是的,您的方法是获取变体库存的正确方法。
只要您每次需要使用其库存数量时都从数据库中获取最新的变体,那么您应该可以使用此方法。
*******已更新
我不确定我明白你想做什么。你应该能够抓住两个变体库存并将它们发送到 jquery 来玩。
$product_variable = new WC_Product_Variable($product->id);
$product_variations = $product_variable->get_available_variations();
foreach ($product_variations as $variation) {
$stock[$variation['attribute_pa_variation-name']] = $variation['max_qty'];
}
在这里,我将库存水平分配给一个关联数组,以 attribute_pa_"your-attribute-name" 作为键
现在我可以将数组发送到 jQuery。
如果我对问题的理解有误,请澄清。
好的,有了这个我就可以拿数量了。
但是没有用。
有了这个我可以准备一个代码来制作不同的句子,每个产品一个,并在使用 jquery 选择变体时显示它。
但这不是个好主意。不优雅。
我虽然存在类似
$product->get_variation_price()
此代码return选择时的变动价格。
但是
$product->get_stock_quantity();
选择变体时不会更改,因为显示全球库存。
谁能给我一个优雅的解决方案?
还是不存在?
更新
终于用上了
$product->get_available_variations()
获取数据。
我用这个生成了 html 代码,用 css 隐藏,当我点击变体的颜色时显示它。
给定一个具有多个变体的可变产品,以获得每个变体的库存数量:
function get_stock_variations_from_product(){
global $product;
$variations = $product->get_available_variations();
foreach($variations as $variation){
$variation_id = $variation['variation_id'];
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
}
}
这是我为 WC 2.5 想出的最干净的方法,我认为在性能方面可能有更好的方法,但不是那么干净。
下面的代码将打印带有“is_in_stock”变量的所有属性。
<?php
global $product;
$product_variations = $product->get_available_variations();
foreach ($product_variations as $variation) {
$var_data = $variation['attributes'];
$var_data['in_stock'] = $variation['is_in_stock'];
}
//List all attributes with stock available or not array..
echo '<pre>';
print_r($var_data);
echo '</pre>';
die;
?>
add_action( 'woocommerce_before_add_to_cart_button', 'get_selected_variation_stock' );
function get_selected_variation_stock() {
global $product;
if ($product->is_type( 'variable' ))
{
$available_variations = $product->get_available_variations();
foreach ($available_variations as $key => $value)
{
$variation_id = $value['variation_id'];
$attribute_pa_colour = $value['attributes']['attribute_pa_colour'];
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
echo $attribute_pa_colour . ": " . $stock . " ";
}
}
通过使用此挂钩,您必须找出所有变体的库存数量以及其他变体的产品数据 woocommerce。
如果其他人想知道如何在循环浏览购物车中的商品时执行此操作,那就是 $cart_item['data']->get_stock_quantity()
下面的示例:
foreach(WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$stock = $cart_item['data']->get_stock_quantity();
}
我正在为 wordpress 和 woocommerce 开发一个主题。
我需要展示变体的库存。
<p class="stock-m13"><?php echo $product->get_stock_quantity(); ?></p>
(此处:How to get the stock quantity of an article from woocommerce?)但此代码只显示全球库存数量,而不是每个变化数量。
我需要另一个函数来获取变化量吗? 或者可能是我的代码没有完成(我认为是因为我使用了二十十五个主题,显示了变化数量)?
我试着用这个获得最大数量:
<?php
foreach ($product->get_available_variations() as $key) {
echo $key['max_qty'] .'<br/>';
}
?>
我明白了,但我不知道这在股票下跌时是否有用。
是的,您的方法是获取变体库存的正确方法。
只要您每次需要使用其库存数量时都从数据库中获取最新的变体,那么您应该可以使用此方法。
*******已更新
我不确定我明白你想做什么。你应该能够抓住两个变体库存并将它们发送到 jquery 来玩。
$product_variable = new WC_Product_Variable($product->id);
$product_variations = $product_variable->get_available_variations();
foreach ($product_variations as $variation) {
$stock[$variation['attribute_pa_variation-name']] = $variation['max_qty'];
}
在这里,我将库存水平分配给一个关联数组,以 attribute_pa_"your-attribute-name" 作为键
现在我可以将数组发送到 jQuery。
如果我对问题的理解有误,请澄清。
好的,有了这个我就可以拿数量了。 但是没有用。
有了这个我可以准备一个代码来制作不同的句子,每个产品一个,并在使用 jquery 选择变体时显示它。
但这不是个好主意。不优雅。 我虽然存在类似
$product->get_variation_price()
此代码return选择时的变动价格。 但是
$product->get_stock_quantity();
选择变体时不会更改,因为显示全球库存。
谁能给我一个优雅的解决方案? 还是不存在?
更新
终于用上了
$product->get_available_variations()
获取数据。
我用这个生成了 html 代码,用 css 隐藏,当我点击变体的颜色时显示它。
给定一个具有多个变体的可变产品,以获得每个变体的库存数量:
function get_stock_variations_from_product(){
global $product;
$variations = $product->get_available_variations();
foreach($variations as $variation){
$variation_id = $variation['variation_id'];
$variation_obj = new WC_Product_variation($variation_id);
$stock = $variation_obj->get_stock_quantity();
}
}
这是我为 WC 2.5 想出的最干净的方法,我认为在性能方面可能有更好的方法,但不是那么干净。
下面的代码将打印带有“is_in_stock”变量的所有属性。
<?php
global $product;
$product_variations = $product->get_available_variations();
foreach ($product_variations as $variation) {
$var_data = $variation['attributes'];
$var_data['in_stock'] = $variation['is_in_stock'];
}
//List all attributes with stock available or not array..
echo '<pre>';
print_r($var_data);
echo '</pre>';
die;
?>
add_action( 'woocommerce_before_add_to_cart_button', 'get_selected_variation_stock' ); function get_selected_variation_stock() { global $product; if ($product->is_type( 'variable' )) { $available_variations = $product->get_available_variations(); foreach ($available_variations as $key => $value) { $variation_id = $value['variation_id']; $attribute_pa_colour = $value['attributes']['attribute_pa_colour']; $variation_obj = new WC_Product_variation($variation_id); $stock = $variation_obj->get_stock_quantity(); echo $attribute_pa_colour . ": " . $stock . " "; } }
通过使用此挂钩,您必须找出所有变体的库存数量以及其他变体的产品数据 woocommerce。
如果其他人想知道如何在循环浏览购物车中的商品时执行此操作,那就是 $cart_item['data']->get_stock_quantity()
下面的示例:
foreach(WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$stock = $cart_item['data']->get_stock_quantity();
}