类似的问题已经有很多了。但我还没有找到一个具体解决这个问题的办法。
一、 与许多其他人一样,他们使用此代码段显示“低至”或“从”以代替显示的标准价格范围:
https://businessbloomer.com/disable-variable-product-price-range-woocommerce/
/**
* @snippet Variable Product Price Range: "From: $$$min_price"
* @how-to Get CustomizeWoo.com FREE
* @sourcecode https://businessbloomer.com/?p=275
* @author Rodolfo Melogli
* @compatible WooCommerce 3.5.4
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_filter( 'woocommerce_variable_price_html', 'bbloomer_variation_price_format_min', 9999, 2 );
function bbloomer_variation_price_format_min( $price, $product ) {
$prices = $product->get_variation_prices( true );
$min_price = current( $prices['price'] );
$price = sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $min_price ) );
return $price;
}
它工作得很好,除了我需要这个代码来考虑任何“缺货”变量。
到目前为止,它将只显示最低的可变价格,如果它是“库存”。
我需要它显示最低价格,即使当前价格变量当前“缺货”。
我没有安装WooCommerce,所以您可能应该等待并接受一个实际给出可执行代码的答案。然而,为了让你知道你需要什么(并给你一个展示自己努力的机会),我将包括你需要检查的东西。我的猜测是,在您的bbloomer\u variation\u price\u format\u min
方法中执行任何操作之前,您都会先检查它,但检查“缺货”的确切位置可能会有所不同。不管怎么说,我的想法是这样的。
您需要使用某种方法来确定产品是否“缺货”。这可能是一个if
语句。实际上,通过快速搜索,我找到了一个特定的if
语句,所以这里可能有可执行代码。
从另一个SO答案来看,该方法似乎是get\u stock\u quantity()
。更具体地说,您将执行一个测试,如
if ( $product->get_stock_quantity() == 0 )
或者,使代码更具可读性。
$product_is_out_of_stock = ( $product->get_stock_quantity() == 0 );
if ( $product_is_out_of_stock == True )
注意,我只注意到应该使用哪个if
语句;您需要填写if
条件和else
条件的代码,可能每个条件都用括号括起来,{
和}
。
检查一下。如果发现产品缺货,返回告诉客户缺货的字符串。如果它没有缺货,请继续使用现有函数,并将
返回
sprintf
-ed到$price
变量中的字符串。
我希望这能让你走上正轨。如果您在获取将要执行的代码时遇到困难,请添加一个编辑,显示您试图检查某些东西是否缺货。
注意:我没有尝试运行这个。这更像是一个概念性的答案。
编辑
听起来你已经在做了。让我更具体地介绍一下您可能使用的代码。我将发布代码,然后我希望很快能有时间在下载的程序中试用它。
/**
* @snippet Variable Product Price Range: "From: $$$min_price"
* @how-to Get CustomizeWoo.com FREE
* @sourcecode https://businessbloomer.com/?p=275
* @author Rodolfo Melogli
* @compatible WooCommerce 3.5.4
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_filter( 'woocommerce_variable_price_html', 'bbloomer_variation_price_format_min', 9999, 2 );
function bbloomer_variation_price_format_min( $price, $product ) {
$product_is_out_of_stock = ( $product->get_stock_quantity() == 0 );
if ( $product_is_out_of_stock == True ) {
$price = sprintf( 'Product, %s , is Out of Stock.', $product );
return $price;
}
else {
$prices = $product->get_variation_prices( true );
$min_price = current( $prices['price'] );
$price = sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $min_price ) );
return $price;
}
}
试试看你现在有什么。至于克隆数据库,我现在可能不是最好的帮助你。然而,知道你在使用什么会很有用。从网上搜索"__
"运算符,您似乎要么使用wordpress,要么使用CakePHP(或其他PHP框架)。对我或最终帮助你的人来说,增加细节是件好事。