WC_Product_Data_Store_CPT::update_product_stock PHP Method

update_product_stock() public method

Uses queries rather than update_post_meta so we can do this in one query (to avoid stock issues).
Since: 2.7.0 this supports set, increase and decrease.
public update_product_stock ( $product_id_with_stock, integer | null $stock_quantity = null, string $operation = 'set' )
$stock_quantity integer | null
$operation string set, increase and decrease.
    public function update_product_stock($product_id_with_stock, $stock_quantity = null, $operation = 'set')
    {
        global $wpdb;
        add_post_meta($product_id_with_stock, '_stock', 0, true);
        // Update stock in DB directly
        switch ($operation) {
            case 'increase':
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value = meta_value + %f WHERE post_id = %d AND meta_key='_stock'", $stock_quantity, $product_id_with_stock));
                break;
            case 'decrease':
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value = meta_value - %f WHERE post_id = %d AND meta_key='_stock'", $stock_quantity, $product_id_with_stock));
                break;
            default:
                $wpdb->query($wpdb->prepare("UPDATE {$wpdb->postmeta} SET meta_value = %f WHERE post_id = %d AND meta_key='_stock'", $stock_quantity, $product_id_with_stock));
                break;
        }
        wp_cache_delete($product_id_with_stock, 'post_meta');
    }