Получите заказ от Woocommerce на сайте WP_Query

У меня есть этот код

<?php
$dateTimeStart = new DateTime(tribe_get_start_date( null, false, 'Y-m-d' ));
$dateTimeEnd   = new DateTime(tribe_get_start_date( null, false, 'Y-m-d' ));
$bookings = WC_Bookings_Controller::get_bookings_in_date_range(
$dateTimeStart->getTimestamp(),
$dateTimeEnd->getTimestamp(),
'',
false
);

$booked[] = 0;
foreach ($bookings as $booking) {
$booked[] = $booking->product_id;
}

$args = array (
'post__in' => $booked,
'post_type' => ['product'],
);

$query = new WP_Query( $args );
$posts = $query->posts;
$sku = $product->get_sku();
wp_reset_query();
?>

Как правильно извлечь SKU из вышеуказанного запроса?

Я старался

<?php echo esc_html( get_post_meta( get_the_ID(), '_sku', true ) ); ?>

который работает для этого запроса

<?php
$args = array( 'post_type' => 'product', 'terms' => array('fvip-ddb','fvip-sdb'), 'posts_per_page' => -1, 'meta_key' => '_regular_price' );
$loop = new WP_Query( $args );
$sku = get_post_meta( $item['product_id'], '_sku', true );
?>

но не работает (отображается пустым) для первого запроса

ОБНОВИТЬ

используя код снизу, когда я запускаю это:

<?php foreach($posts as $post) { echo "{ toolTip: \"Say something here.\", key : \"$skubooked\", staticState: true },"; } ?>

по какой-то причине цикл возвращает одно и то же значение 3 раза. (Есть три разных заказа товара … но цикл показывает один и тот же товар три раза) ..

1

Решение

Есть несколько способов получить товар SKU:

  1. Использование WordPress get_post_meta() с мета-ключом _sku
  2. С использованием WC_Product метод get_sku() на WC_product объект

Ваш запрос должен выглядеть следующим образом:

$query = new WP_Query( array(
'post_type'      => 'product',
// 'post_status'    => 'publish',
'posts_per_page' => -1 ,
'post__in'       => $booked,
) );

if ( $query->have_posts() ): while ( $query->have_posts() ): $query->the_post();

$sku = get_post_meta( get_the_ID(), '_sku', true );

endwhile; wp_reset_query(); endif;

Или же

$query = new WP_Query( array(
'post_type'      => 'product',
// 'post_status'    => 'publish',
'posts_per_page' => -1 ,
'post__in'       => $booked,
) );

if ( $query->have_posts() ): while ( $query->have_posts() ): $query->the_post();

// get an instance of the WC_product object
$product = wc_get_product( get_the_ID() );

$sku = $product get_sku();

endwhile; wp_reset_query(); endif;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]