Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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->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 );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement