wordpressおよびwoocommerceのテーマを開発しています。
バリエーションの在庫を見せてください。
<p class="stock-m13"><?php echo $product->get_stock_quantity(); ?></p>
(ここ: woocommerceから商品の在庫数を取得する方法は? )しかし、このコードは、各バリエーション数量ではなく、グローバル在庫数量のみを表示します。
変動量を取得するために別の関数が必要ですか?または、コードが完成していない可能性があります(私はTwenty Fifteenテーマを使用し、バリエーション量が示されているためだと思います)?
私はこれで最大数量を取得しようとします:
<?php
foreach ($product->get_available_variations() as $key) {
echo $key['max_qty'] .'<br/>';
}
?>
そして、私はそれを手に入れましたが、在庫が下がったときにこれが役立つかどうかわかりません。
わかりました、これで私は量を取ることができます。しかし、役に立ちません。
これにより、製品ごとに異なるセンテンスを作成するコードを準備し、jqueryを使用してバリエーションが選択されたときにそれを示すことができます。
しかし、これは良い考えではありません。エレガントではありません。私はのようなものが存在していたにもかかわらず
$product->get_variation_price()
選択すると、このコードはバリエーション価格を返します。だが
$product->get_stock_quantity();
グローバル在庫を表示するため、バリエーションを選択しても変更されません。
誰かが私にエレガントな解決策を与えることができますか?または存在しませんか?
[〜#〜]更新[〜#〜]
最後に私は使用しました
$product->get_available_variations()
データを取得します。
これでcssで隠されたhtmlコードを生成しました。バリエーションの色をクリックすると表示されます。
各バリエーションの在庫数を取得するために、複数のバリエーションを持つ変数製品を考えます。
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;
?>
はい、あなたの方法は、バリエーションの在庫をつかむ正しい方法です。
在庫数を使用する必要があるたびにデータベースから新しいバリエーションを取得している限り、この方法を使用しても問題ありません。
*******更新済み
何をしようとしているのかよくわかりません。両方のバリエーションの在庫を取得し、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に送信できます。
私がその質問を誤解しているかどうかを明確にしてください。