WooCommerce-显示每个变体的库存数量

时间:2018-06-26 作者:Granny

我一直在google上搜索并尝试不同的代码,以获得要在产品页面上显示的变化库存量。

例如,当我为衬衫选择XXL时,它将显示库存中的xx。

我一直找不到任何有用的东西,也找不到足够好的解释来重新创建它。

我尝试过:https://stackoverflow.com/questions/30514596/how-get-variations-stock-quantity-woocommerce 还有更多。

以下是我当前的“添加到购物车”代码:

<?php
/**
 * Single variation cart button
 *
 * @see https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce/Templates
 * @version 3.4.0
 */

defined( \'ABSPATH\' ) || exit;

global $product;
?>
<div class="woocommerce-variation-add-to-cart variations_button">
    <?php do_action( \'woocommerce_before_add_to_cart_button\' ); ?>

    <?php
    do_action( \'woocommerce_before_add_to_cart_quantity\' );

    woocommerce_quantity_input( array(
        \'min_value\'   => apply_filters( \'woocommerce_quantity_input_min\', $product->get_min_purchase_quantity(), $product ),
        \'max_value\'   => apply_filters( \'woocommerce_quantity_input_max\', $product->get_max_purchase_quantity(), $product ),
        \'input_value\' => isset( $_POST[\'quantity\'] ) ? wc_stock_amount( wp_unslash( $_POST[\'quantity\'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok.
    ) );

    do_action( \'woocommerce_after_add_to_cart_quantity\' );
    ?>

    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>

    <?php do_action( \'woocommerce_after_add_to_cart_button\' ); ?>

    <input type="hidden" name="add-to-cart" value="<?php echo absint( $product->get_id() ); ?>" />
    <input type="hidden" name="product_id" value="<?php echo absint( $product->get_id() ); ?>" />
    <input type="hidden" name="variation_id" class="variation_id" value="0" />
</div>
我尝试了下面的代码,但这只给了我一个XXXL变量,它显示了错误的库存金额。

<?php
        $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>\';
    ?>
我希望你们能给我指出正确的方向!

你好Robbert

1 个回复
SO网友:kierzniak

显示每个产品变量的库存量是默认的WooCommerce行为。为了获得最佳效果,在开发自己的主题时,请使用默认的店面/woocommerce HTML结构和JS文件,然后使用CSS样式对其进行样式设置。

为了测试每个产品变体的库存量是否正确显示,我安装了clean WordPress 4.9.6和WooCommerce 3.4.3,并遵循Variable product 要添加的页面。

记住设置每个变体的库存数量,并为每个变体添加价格,以使产品有库存。

如果出于其他原因希望获取每个变量的库存量,可以使用以下代码:

/**
 * Get all variations stock quantity
 * 
 * @param int $product_id Product ID which has variations
 */
function wpse_306996_get_variations_stock_quantity( $product_id ) {

    $product    = wc_get_product( $product_id );
    $variations = $product->get_available_variations();

    $variations_stock = array();

    foreach ( $variations as $variation ) {

        $variation_o = new WC_Product_Variation( $variation[\'variation_id\'] );
        $variations_stock[] = $variation_o->get_stock_quantity();
    }

    return $variations_stock;
}

/**
 * USAGE
 */
$variations_stock = wpse_306996_get_variations_stock_quantity( $product_id );

结束

相关推荐