Woocommerce - получите значение атрибута для продуктов в корзине - PullRequest
0 голосов
/ 08 января 2020

Я использую Woocommerce для настройки страницы электронной коммерции, на которой продаются планы питания.

В настоящее время у меня есть настройщик продукта , который позволяет клиенту создать свой собственный план питания / составной.

Я пытаюсь передать некоторые значения в виджет плагина. В частности, я пытаюсь получить имена и значения атрибутов продукта, которые в настоящее время находятся в моей корзине.

Атрибуты продукта отображают информацию о питании для каждого составного продукта. Когда покупатель добавляет товар в свою корзину, я хотел бы, чтобы информация о питании (атрибуты товара) заполнялась.

Для первого элемента я смог получить названия атрибутов товара для товаров в корзине, используя код ниже (от здесь ):

 $item_data = $cart_item['data'];
 // print_r($item_data);
  $attributes = $item_data->get_attributes();
  //print_r($attributes);
foreach ( $attributes as $attribute => $attribute_term ) {
$term = get_term_by('slug', $attribute_name, $attribute);    
echo wc_attribute_label( $attribute ).': '.$term->term;
} 

Отображает только имя атрибута. Именно то, что мне нужно для столбца 1.

Однако я хочу отобразить значение атрибута в столбце 2, но я не уверен, как манипулировать приведенным выше кодом для достижения этой цели. В настоящее время у меня есть тот же код, переданный в столбец 2

Пример текущей ситуации

Таким образом, на шаге 1 (выше) будет печататься значение атрибута продукта, соответствующее к названию атрибута продукта в столбце 1.

Шаг 2 - сделать это немного дальше, суммируя атрибуты, общие для продуктов. Например, если продукт 1 и продукт 2 оба имеют атрибут «жиры» со значениями «2» и «3» соответственно, то я надеюсь вывести «5» (сумма для общих атрибутов продукта).

Любое понимание очень ценится. У меня ограниченные знания в области программирования, и я учусь с этим проектом как я go.

1 Ответ

0 голосов
/ 08 января 2020

Вот пример кода, который может вам помочь

add_filter( 'woocommerce_cart_item_name', 'customizing_cart_item_data', 10, 3);
function customizing_cart_item_data( $item_name, $cart_item, $cart_item_key ) {
    $term_names = array();

    // Get product categories
    $terms = wp_get_post_terms( $cart_item['product_id'], 'product_cat' );

    if( count($terms) > 0 ){
        foreach( $terms as $term ) $term_names[] = $term->name;

        $item_name .= '<p class="item-category" style="margin:12px 0 0; font-size: .875em;">
            <strong class="label">' . _n( 'Category', 'Categories', count($terms), 'woocommerce' ) . ': </strong>
            <span class="values">' . implode( ', ', $term_names ) . '</span>
        </p>';
    }
    return $item_name;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...