• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Вариации в наличии на странице каталога

moonkir

Новичок
vrb.PNG

Отображение вариаций товара в наличии на странице каталога.
Может кому пригодится...


PHP:
<?php
add_action( 'woocommerce_after_shop_loop_item_title', 'echo_stock_variations_loop' ); //основной хук
function echo_stock_variations_loop(){
    global $product;
  echo '<span class="vrbs">';
    if ( $product->get_type() == 'variable' ) {
        foreach ( $product->get_available_variations() as $variations ) {
            $attr_string = array();
            foreach ( $variations['attributes'] as $attr_name => $attr_value ) {
                $attr_string[] = $attr_value;
            }
          if( $variations['is_in_stock']) {
            echo '<span class="vrb">' . attribute_slug_to_title($attr_name, $attr_value) . '</span>';
          }
        }
    }
  echo '</span>';
}
    //Функция вывод названий атрибута, вместо слага
    function attribute_slug_to_title( $attribute ,$slug ) {
        global $woocommerce;
        if ( taxonomy_exists( esc_attr( str_replace( 'attribute_', '', $attribute ) ) ) ) {
            $term = get_term_by( 'slug', $slug, esc_attr( str_replace( 'attribute_', '', $attribute ) ) );
            if ( ! is_wp_error( $term ) && $term->name )
                $value = $term->name;
        } else {
            $value = apply_filters( 'woocommerce_variation_option_name', $value );
        }
        return $value;
    }
?>

CSS:
.vrb {
    margin-top: 6px;
    border-radius: 50%;
    display:inline-block;
    width: 30px;
    height: 30px;
    line-height: 30px;
    text-align: center;
    margin-right: 10px;
    cursor: pointer;
    border: 1px solid black;
    position: relative;
}
 
Сверху Снизу