我有产品id:-$posts
. 现在,我必须使用代码将产品变量variation stock更改为outofstock。我有下面的代码片段,但它并没有更新产品的变体库存。任何人都可以告诉我怎么做。
$children = get_posts( array(
\'post_parent\' => $posts,
\'posts_per_page\'=> -1,
\'post_type\' => \'product_variation\',
\'fields\' => \'ids\',
\'post_status\' => \'publish\'
) );
$out_of_stock_staus = \'outofstock\';
foreach ( $children as $child_id ) {
echo $child_idss= $child_id->ID;
echo $child_stock_status = get_post_meta( $child_id, \'_stock_status\', true );
// $child_stock_status = $child_stock_status ? $child_stock_status : \'instock\';
//wc_update_product_stock_status( $product_id, $stock_statusss );
update_post_meta( $child_id, \'_stock_status\', wc_clean( $out_of_stock_staus ) );
}
最合适的回答,由SO网友:fischi 整理而成
代码的大多数部分都是不必要的。
假设您使用get_posts()
, 您可以循环浏览这些帖子,并更新meta。
循环中的变量和对象也很混乱,您试图通过post对象而不是$id
.
$children = get_posts( array(
\'post_parent\' => $posts,
\'posts_per_page\'=> -1,
\'post_type\' => \'product_variation\',
\'post_status\' => \'publish\'
) );
$out_of_stock_staus = \'outofstock\';
foreach ( $children as $thischild ) {
update_post_meta( $thischild->ID, \'_stock_status\', wc_clean( $out_of_stock_staus ) );
}