Показать 4 первых атрибута продукта - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу отобразить первые 4 атрибута продукта на каждой карточке продукта. Этот код показывает мне только определенные c атрибуты. Есть ли способ получить эти атрибуты? Каждая категория имеет свои атрибуты, поэтому я не могу сделать это для каждой категории на сайте. Пожалуйста, помогите мне

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

$has_row    = false;
$attributes = $product->get_attributes();

ob_start();

?>
<div class="product_attributes">

    <?php foreach ( $attributes as $attribute ) :

        if ( empty( $attribute['is_visible'] ) || ( $attribute['is_taxonomy'] && ! taxonomy_exists( $attribute['name'] ) ) ) 
            continue;

        $values = wc_get_product_terms( $product->get_id(), $attribute['name'], array( 'fields' => 'names' ) );
        $att_val = apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );

        if( empty( $att_val ) )
            continue;

        $has_row = true;
        ?>

    <div class="col">
        <div class="att_label"><?php echo wc_attribute_label( $attribute['name'] ); ?></div>
        <div class="att_value"><?php echo $att_val; ?></div><!-- .att_value -->
    </div><!-- .col -->

    <?php endforeach; ?>

</div><!-- .product_attributes -->
<?php
if ( $has_row ) {
    echo ob_get_clean();
} else {
    ob_end_clean();
}

1 Ответ

0 голосов
/ 22 апреля 2020

Так я написал другую функцию:

if( $_product->has_attributes() ){
    // Initializing
    $attributes = array(); 
    // Loop through product attributes
    $i = 0;
    foreach( $_product->get_attributes() as $taxonomy => $attribute ){
        // The product attribute label name

        $attribute_name = get_taxonomy( $taxonomy )->labels->singular_name;

        // Set each product attribute with its values in an array

        // $attributes[] = '<strong>'.$attribute_name.'</strong>: '.$_product->get_attribute($taxonomy);

        ?> 
        <div class="prodAttr">
            <p class="prodAttr__title"><?php echo $attribute_name?></p>
            <p class="prodAttr__value"><?php echo $_product->get_attribute($taxonomy) ?></p>
        </div>

        <?php
            $i++;
            if ($i == 4) break;
    }

    // Display (output)
    // echo '<div class="product-attributes"><span>'. implode( '</span> <span>', $attributes ) . '</span></div>';

}

Работает. Закрыто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...