在开发一个 WooCommerce 插件时,我会在add_to_cart
内使用class-wc-cart.php
功能,将自定义产品添加到购物车中。但在将woocomerce更新到最新版本后,我收到错误。
抱歉,此产品无法购买。
因为在add_to cart
函数内部,$product_data->is_purchasable()
部分开始返回false
。我调试了一个问题,is_purchasable()
返回false的原因是get_price()
函数。因为这个函数作为价格返回空,因此woocommerce告诉我,由于空价,产品不可购买。
产品有价格,可以使用界面添加到购物车。该插件在旧版的woocommerce中运行良好。如果您需要更多数据,请与我们联系。
答案 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文件中。经过测试和工作。