moonkir
Новичок
Отображение вариаций товара в наличии на странице каталога.
Может кому пригодится...
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;
}