如何回应" #in stock"来自WooCommerce的产品页面?

时间:2017-05-30 14:35:36

标签: woocommerce echo stock variation

我尝试重新打印"库存"在产品页面内,但我找不到解决方案,我怎么能回应它。在图像上默认情况下,但我希望在同一页面上再次使用它,我该如何回显/打印它。

由于

>>>1 in stock Image <<<

1 个答案:

答案 0 :(得分:0)

function wc_dropdown_variation_attribute_options( $args = array() ) {
    global $product;
    $variations = $product->get_available_variations();


        $args = wp_parse_args( apply_filters( 'woocommerce_dropdown_variation_attribute_options_args', $args ), array(
            'options'          => false,
            'attribute'        => false,
            'product'          => false,
            'selected'         => false,
            'name'             => '',
            'id'               => '',
            'class'            => '',
            'show_option_none' => __( 'Choose an option', 'woocommerce' ),
        ) );
        $options   = $args['options'];
        $product   = $args['product'];
        $attribute = $args['attribute'];

        $name      = $args['name'] ? $args['name'] : 'attribute_' . sanitize_title( $attribute );
        $id        = $args['id'] ? $args['id'] : sanitize_title( $attribute );
        $class     = $args['class'];
        if ( empty( $options ) && ! empty( $product ) && ! empty( $attribute ) ) {
            $attributes = $product->get_variation_attributes();
            $options    = $attributes[ $attribute ];

        }
        $html = '<select id="' . esc_attr( $id ) . '" class="' . esc_attr( $class ) . '" name="' . esc_attr( $name ) . '" data-attribute_name="attribute_' . esc_attr( sanitize_title( $attribute ) ) . '">';
        if ( $args['show_option_none'] ) {
            $html .= '<option value="">' . esc_html( $args['show_option_none'] ) . '</option>';
        }
        if ( ! empty( $options ) ) {

            /*if ( $product && taxonomy_exists( $attribute ) ) {

                // Get terms if this is a taxonomy - ordered. We need the names too.
                $terms = wc_get_product_terms( $product->get_id(), $attribute, array( 'fields' => 'all' ) );
                foreach ( $terms as $term ) {
                    if ( in_array( $term->slug, $options ) ) {
                        $html .= '<option value="' . esc_attr( $term->slug ) . '" ' . selected( sanitize_title( $args['selected'] ), $term->slug, false ) . '>' . esc_html( apply_filters( 'woocommerce_variation_option_name', $term->name ) ) . '</option>';
                    }
                }
            } else {*/
                foreach ( $options as $option ) {

                    foreach ($variations as $variation) {
                        if($variation['attributes'][$name] == $option) {
                            $stock = esc_html($variation['max_qty']);
                        }
                    }
                    if( $stock == 0) {
                        $stock_text = ' - (Out of Stock)';
                        $class = 'option-out-of-stock';
                        $disabled = 'disabled';
                    } elseif ($stock < 5 ) {
                        $stock_text = ' - Only ' . $stock . ' left!';
                        $class= 'option-hurry';
                        $disabled = '';
                    } elseif ($stock < 6) {
                        $stock_text = ' - Only a few left!';
                        $class = 'option-few';
                        $disabled = '';
                    } else {
                        $stock_text = ' - (In Stock)';
                        $class = '';
                        $disabled = '';
                    }
                    // This handles < 2.4.0 bw compatibility where text attributes were not sanitized.
                    $selected = sanitize_title( $args['selected'] ) === $args['selected'] ? selected( $args['selected'], sanitize_title( $option ), false ) : selected( $args['selected'], $option, false );
                    $html .= '<option value="' . esc_attr( $option ) . '" ' . $selected . ' class="'.$class.'" '.$disabled.'>' . $option  .  $stock_text .'</option>';
                //}
            }
        }
        $html .= '</select>';

        echo apply_filters( 'woocommerce_dropdown_variation_attribute_options_html', $html, $args );
    }