提问者:小点点

根据管理产品列表表中的库存数量显示自定义库存状态


我为WooCommerce产品添加了自定义库存状态“即将上市”。当产品库存数量等于1时,我想更改此状态。

我尝试了一个钩子上的感谢页面和它更新的状态在数据库使用查询

update_post_meta( $product_id, '_stock_status', 'availablesoon' );

但是当我在WooCommerce产品仪表板中看到该特定产品仍然处于“库存”状态。

我的完整代码:

add_action( 'woocommerce_thankyou', 'change_stock_status_cstm', 10, 1);
function change_stock_status_cstm( $order_id ){
$order = wc_get_order( $order_id );
$items = $order->get_items(); 
foreach ( $items as $item_id => $item ) {
    $product   = $item->get_product();
    $product_id = $item->get_variation_id() ? $item->get_variation_id() : 
    $item->get_product_id();
    if ( $product->get_stock_quantity() == 1 ) {
        update_post_meta( $product_id, '_stock_status', 'availablesoon' );
    }
}
}

有人能告诉我如何更新仪表板中的库存状态吗?


共2个答案

匿名用户

如果要根据当前库存量在管理产品列表表上显示自定义库存状态,可以使用:

// Admin stock html
function filter_woocommerce_admin_stock_html( $stock_html, $product ) {
    if ( $product->get_stock_quantity() == 1 ) {
        $stock_html = '<mark class="my-class" style="background:transparent none;color:#33ccff;font-weight:700;line-height:1;">' . __( 'Available soon', 'woocommerce' ) . '</mark>'; 
    }

    return $stock_html;
}
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );

相关:如何在WooCommerce 4中为产品添加自定义库存状态

匿名用户

你可以试试这个。

$product = wc_get_product( $variant_post_id );  
wc_update_product_stock( $product,  $qty_new , 'set' );
wc_delete_product_transients( $variant_post_id );