Атрибут продукта пустое значение из позиции заказа в Woocommerce 3 - PullRequest
0 голосов
/ 30 июня 2018

enter image description here Я знаю, что по этому вопросу уже есть много вопросов, но я не могу понять, как получить собственный атрибут продукта из заказа woocommerce. вот что я попробовал:

    $order = wc_get_order( $order_id );
    $order_data = $order->get_data();

    foreach ($order->get_items() as $item_key => $item_values) {

    $product = $item_values->get_product(); // Get the product
    $product_id = $item_values->get_product_id(); // the Product id
    $tokens = get_post_meta($product_id, 'Tokens', true);
    }

Я тоже попробую:

    $tokens = $product->get_attribute( 'Tokens' );

и

    $tokens = array_shift( wc_get_product_terms( $product_id, 'Tokens', array( 'fields' => 'names' ) ) );

Мой пользовательский атрибут продукта имеет имя " Tokens " и значение 5000 , но я получаю пустой возврат,

что я делаю не так?

1 Ответ

0 голосов
/ 01 июля 2018

Это может произойти для переменной product , когда атрибут продукта не установлен в качестве атрибута для вариантов .

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

Если это относится к атрибуту продукта "Жетоны", попробуйте следующее:

$attribute = 'Tokens';
$order     = wc_get_order( 857 );

// Loop through order line items
foreach ( $order->get_items() as $item_id => $item ) {
    $product = $item->get_product(); // Get the WC_Product object

    // For Product Variation type
    if( $item->get_variation_id() > 0 ){
        $parent = wc_get_product($product->get_parent_id());
        $term_names = $parent->get_attribute($attribute);
    }
    // For other Product types
    else {
        $term_names = $product->get_attribute($attribute);
    }

    // Testing display (the string of coma separated term names if many)
    if( ! empty( $term_name ) )
        echo '<p>'.$term_name.'</p>';
}

Протестировано и работает в Woocommerce 3 +

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