 
  
   
  
   
  
  global $product;
    $attributes = $product->get_attributes();
  
    if ( ! $attributes ) {
        return;
    }
  
    $out = '<ul class="custom-attributes">';
  
    foreach ( $attributes as $attribute ) {
  
  
        // skip variations
        if ( $attribute->get_variation() ) {
        continue;
        }
        $name = $attribute->get_name();
        if ( $attribute->is_taxonomy() ) {
  
            $terms = wp_get_post_terms( $product->get_id(), $name, 'all' );
            // get the taxonomy
            $tax = $terms[0]->taxonomy;
            // get the tax object
            $tax_object = get_taxonomy($tax);
            // get tax label
            if ( isset ( $tax_object->labels->singular_name ) ) {
                $tax_label = $tax_object->labels->singular_name;
            } elseif ( isset( $tax_object->label ) ) {
                $tax_label = $tax_object->label;
                // Trim label prefix since WC 3.0
                if ( 0 === strpos( $tax_label, 'Product ' ) ) {
                   $tax_label = substr( $tax_label, 8 );
                }                
            }
  
  
            $out .= '<li class="' . esc_attr( $name ) . '">';
            $out .= '<span class="attribute-label">' . esc_html( $tax_label ) . ': </span> ';
            $out .= '<span class="attribute-value">';
            $tax_terms = array();
            foreach ( $terms as $term ) {
                $single_term = esc_html( $term->name );
                // Insert extra code here if you want to show terms as links.
                array_push( $tax_terms, $single_term );
            }
            $out .= implode(', ', $tax_terms);
            $out .= '</span></li>';
 
        } else {
            $value_string = implode( ', ', $attribute->get_options() );
            $out .= '<li class="' . sanitize_title($name) . ' ' . sanitize_title( $value_string ) . '">';
            $out .= '<span class="attribute-label">' . $name . ': </span> ';
            $out .= '<span class="attribute-value">' . esc_html( $value_string ) . '</span></li>';
        }
    }
  
    $out .= '</ul>';
  
    echo $out; 
  
   
  
   
  
   
  
  function woocommerce_template_loop_product_thumbnail(){
    $product_img = get_the_post_thumbnail_url();
    echo '
        <div class="product-image" style="background-image:url(' . $product_img . ');"></div>
    ';
} 
  
  function woocommerce_template_loop_price(){
    global $product;
    $product = get_product( get_the_ID() );
    if ( $price_html = $product->get_price_html() ) :
    echo '
        <div class="product-price">
            '. $price_html .'
        </div>
    '; 
    endif;
}function tutsplus_product_subcategories() {
 global $post;
    $terms = get_the_terms( $post->ID, 'product_cat' );
    $nterms = get_the_terms( $post->ID, 'product_tag'  );
    foreach ($terms  as $term  ) {
        $product_cat_id = $term->term_id;
        $product_cat_name = $term->name;
        break;
    }
    echo '
        <div class="product-cat">
            ' . $product_cat_name . '
        </div>
    ';
} 
  
  $(window).resize(function() { // если был изменен размер окна
    if($(window).width() < 768) { // создаем условие, что при ширине окна меньшем 768px
        $('.col-xs').addClass('new-style'); // даем классу col-xs новый класс new-style
    }
});