【问题标题】:WooCommerce $product->get_stock_quantity(); breaking cart pageWooCommerce $product->get_stock_quantity();打破购物车页面
【发布时间】:2018-07-10 11:31:24
【问题描述】:

我在 WooCommerce 模板中编辑了 quantity-input.php 模板文件,以创建我自己的输入按钮。问题是我使用了 $product->get_stock_quantity();在输入上设置 max 属性。这在所有页面上都可以正常工作,除了购物车页面会破坏 html 并显示此错误;

注意:试图获取非对象的属性

为什么这会破坏购物车页面,而其他却没有?

这是完整的模板代码;

if ( $max_value && $min_value === $max_value ) {
    ?>
    <div class="quantity hidden">
        <input type="hidden" id="<?php echo esc_attr( $input_id ); ?>" class="qty" name="<?php echo esc_attr( $input_name ); ?>" value="<?php echo esc_attr( $min_value ); ?>" />
    </div>
    <?php
} else {
    /* translators: %s: Quantity. */
    $labelledby = ! empty( $args['product_name'] ) ? sprintf( __( '%s quantity', 'woocommerce' ), strip_tags( $args['product_name'] ) ) : '';
    ?>
    <div class="quantity">
        <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php esc_html_e( 'Quantity', 'woocommerce' ); ?></label>
        <div class="increment">
            <span></span><span></span>
        </div>

        <?php global $product ?>

        <input
            type="text"
            id="<?php echo esc_attr( $input_id ); ?>"
            class="input-text qty text"
            step="<?php echo esc_attr( $step ); ?>"
            min="<?php echo esc_attr( $min_value ); ?>"
            max="<?php echo $product->get_stock_quantity();?>"
            name="<?php echo esc_attr( $input_name ); ?>"
            value="<?php echo esc_attr( $input_value ); ?>"
            title="<?php echo esc_attr_x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ); ?>"
            size="4"
            pattern="<?php echo esc_attr( $pattern ); ?>"
            inputmode="<?php echo esc_attr( $inputmode ); ?>"
            aria-labelledby="<?php echo esc_attr( $labelledby ); ?>" />
            <div class="decrement">
                <span></span>
            </div>
    </div>
    <?php
}

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    看起来 $product 不包含(有效)对象。

    您可以通过以下方式检查 $product 是否为对象

    if (is_object($product) )
       echo 'Yes a object';
     else
       echo 'Sorry no object';     
    

    【讨论】:

    • 但是为什么这只发生在购物车页面上。我试过你的代码,它不是一个对象
    • github.com/woocommerce/woocommerce/issues/2920 告诉我“当使用 the_post() 时,全局 $product 只是 WC_Product 类的对象。”也许您可以将 product_id 作为参数发送,而不是 使用 ID ); ?> 获得产品。或简单地将数量作为参数发送。
    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2021-05-12
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多