在WooCommerce 3中更改产品是可以购买的

时间:2018-04-21 23:20:22

标签: php wordpress woocommerce cart product

在开发一个 WooCommerce 插件时,我会在add_to_cart内使用class-wc-cart.php功能,将自定义产品添加到购物车中。但在将woocomerce更新到最新版本后,我收到错误。

  

抱歉,此产品无法购买。

因为在add_to cart函数内部,$product_data->is_purchasable()部分开始返回false。我调试了一个问题,is_purchasable()返回false的原因是get_price()函数。因为这个函数作为价格返回空,因此woocommerce告诉我,由于空价,产品不可购买。

产品有价格,可以使用界面添加到购物车。该插件在旧版的woocommerce中运行良好。如果您需要更多数据,请与我们联系。

1 个答案:

答案 0 :(得分:1)

您可以使用 '' !== $product->get_price() 语句中的IF进行必要的更改,这样:

add_filter( 'woocommerce_is_purchasable', 'customizing_is_purchasable', 20, 2 );
function customizing_is_purchasable( $purchasable, $product ){
    if( $product->exists() && ( 'publish' === $product->get_status() || current_user_can( 'edit_post', $product->get_id() ) ) )
        $purchasable = true; 

    return $purchasable;
}

对于产品变体,您也可以同时尝试(未经测试,但应该可以使用)

add_filter( 'woocommerce_variation_is_visible', 'customizing_variation_is_visible', 20, 4 );
function customizing_variation_is_visible( $visible, $product_id, $parent_id, $product ){
    if( 'publish' === get_post_status( $product->get_id() ) )
        $visible = true;
    else
        $visible = false;

    return $visible;
}

代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作。