在 WP_Query 中从 Woocommerce 产品预订中获取 sku
Get sku from Woocommerce product bookings in a 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 },"; } ?>
出于某种原因,循环 return 相同的值 3 次。 (有 3 个不同的产品预订.. 但循环显示相同的产品 3 次)..
有多种获取产品 SKU 的方法:
- 使用 WordPress
get_post_meta()
和元键 _sku
- 在
WC_product
对象上使用 WC_Product
方法 get_sku()
您的查询应该类似于以下代码:
$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;
我有这个代码
<?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 },"; } ?>
出于某种原因,循环 return 相同的值 3 次。 (有 3 个不同的产品预订.. 但循环显示相同的产品 3 次)..
有多种获取产品 SKU 的方法:
- 使用 WordPress
get_post_meta()
和元键_sku
- 在
WC_product
对象上使用WC_Product
方法get_sku()
您的查询应该类似于以下代码:
$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;