如果售罄,如何自动将WooCommerce产品设置为草稿

时间:2016-02-25 03:22:38

标签: php wordpress woocommerce

我尝试使用Woocommerce中的'Hide if sold out'选项。但我使用不同的插件来显示我的产品(GridFX Masonry Gallery),它仍然显示已售罄的产品。有没有办法在购买最后一件商品并将其售罄时将产品更改为草稿?有这样的片段吗?

2 个答案:

答案 0 :(得分:1)

Maha Dev之前的回答无效。

在主题函数文件中,除非您使用get_stock_quantity()调用产品数据,否则wc_get_product方法不存在。

使用set_post_type会更改帖子的实际类型,而不是它的状态,您需要使用wp_update_post并设置帖子状态。

这是我最终使用的代码:

/*
* Unpublish products after purchase
*/
function lbb_unpublish_prod($order_id) {

    $order = new WC_Order( $order_id );

    $all_products = $order->get_items();
    foreach ($all_products as $product){
        $product_object = wc_get_product($product['product_id']);
            // This will only work if stock management has been enabled
        if( ! $product_object->get_stock_quantity() ) {
            wp_update_post(array(
                'ID' => $product['product_id'],
                'post_status' => 'draft'
                ));
        }

    }
}
add_action( 'woocommerce_thankyou', 'lbb_unpublish_prod', 10, 1 );

答案 1 :(得分:0)

更好的方法是设置产品库存(在您的情况下为1)。选择“隐藏缺货产品”。它将隐藏缺货产品。但如果您确实要隐藏订购的产品,请参阅下面的代码:

//functions.php    

add_action( 'woocommerce_thankyou', 'your_func', 10, 1 );

    function your_func($order_id) {

        $order = new WC_Order( $order_id );

        $all_products = $order->get_items();
        foreach ($all_products as $product){
            // This will only work if stock management has been enabled
            if( ! $product->get_stock_quantity() )
                set_post_type ($product['product_id'], 'draft');
        }
    }

这将隐藏购物车中添加的所有产品以便订购。您可以根据需要自定义此功能。