About update product stock status function in WooCommerce 3

人盡茶涼 提交于 2019-12-11 11:23:22

问题


The deal is, I have to fix an error in a custom WooCommerce import plugin, which appeared after updating WC from 2.6 to 3.4.

It uses the 'wc_update_product_stock_status' function, and used to pass post (product) id and it's stock status as it is represented in DB ('instock' and 'outofstock', as a string). But nowadays, as I can see in the WooCommerce docs (https://docs.woocommerce.com/wc-apidocs/function-wc_update_product_stock_status.html) it accepts integer instead of string.

So, the question is - what are those integers for in/out of stock values (1/0 did not fit).


回答1:


If you look to the source code in wc_update_product_stock_status() function:

/**
 * Update a product's stock status.
 *
 * @param  int $product_id
 * @param  int $status
 */
function wc_update_product_stock_status( $product_id, $status ) {
    $product = wc_get_product( $product_id );
    if ( $product ) {
        $product->set_stock_status( $status );
        $product->save();
    }
}

It uses the WC_Product set_stock_status() Woocommerce 3 CRUD method which uses strings But not integers values:

/**
 * Set stock status.
 *
 * @param string $status New status.
 */
public function set_stock_status( $status = 'instock' ) {
    $valid_statuses = wc_get_product_stock_status_options();

    if ( isset( $valid_statuses[ $status ] ) ) {
        $this->set_prop( 'stock_status', $status );
    } else {
        $this->set_prop( 'stock_status', 'instock' );
    }
}

So it's an error in the comment usage in wc_update_product_stock_status() function.

It still uses: 'instock' and 'outofstock' status strings. the default value is 'instock'

The main difference is also that stock status is now handled as outofstock term for the custom taxonomy product_visibility

Before Woocommerce 3, stock status was handled as product meta data.



来源:https://stackoverflow.com/questions/51881095/about-update-product-stock-status-function-in-woocommerce-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!