Woocommerce для каждого цикла атрибутов - PullRequest
2 голосов
/ 31 марта 2020

как вы выводите атрибуты варианта для продукта woocommerce, где каждый атрибут находится в отдельном элементе div?

add_action( 'woocommerce_after_shop_loop_item_title', 'display_color_attribute', 5 );
    function display_color_attribute() {
        global $product;

        if ( $product->is_type('variable') ) {
            $taxonomy = 'pa_color';
            echo '<span class="attribute-color">' . $product->get_attribute($taxonomy) . '</span>';
        }
    }

Это право выводит оба цвета на странице продукта, разделенные запятой, так что для одного продукта это может быть:

<span class="attribute-color">Black, Brown</span>

То, что я хотел бы вывести эти два цвета в два отдельных div, как это:

<span class="attribute-color black">Black</span>
<span class="attribute-color brown">Brown</span>

это выполнимо?

Ответы [ 2 ]

1 голос
/ 31 марта 2020

1.По просмотру вашего кода, а также на основе get_attribute () подробностей вы фактически получаете строку, разделенную запятыми.

2. Так explode(), чтобы преобразовать ее в массив и l oop над ним, как показано ниже:

add_action( 'woocommerce_after_shop_loop_item_title', 'display_color_attribute', 5 );
function display_color_attribute() {
    global $product;

    if ( $product->is_type('variable') ) {
        $taxonomy = 'pa_color';
        $colors = explode(',',$product->get_attribute($taxonomy));
        foreach ($colors as $color) {
            echo '<span class="attribute-color '. strtolower(trim($color)) .'">' . trim($color) . '</span>';
        }   
    }
}

Ссылка: -

взорваться ()

strtolower ()

отделка ()

0 голосов
/ 31 марта 2020

Я подозреваю, $product->get_attribute($taxonomy); возвращает массив, поэтому вам потребуется l oop, как показано ниже:

add_action( 'woocommerce_after_shop_loop_item_title', 'display_color_attribute', 5 );
function display_color_attribute() {
    global $product;

    if ( $product->is_type('variable') ) {
        $taxonomy = 'pa_color';
        $colors = $product->get_attribute($taxonomy);
        foreach ($colors as $color) {
            echo '<span class="attribute-color '. strtolower($color) .'">' . $color . '</span>';
        }   
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...