提问者:小点点

WooCommerce |显示最低价格(包括缺货)-PHP


类似的问题已经有很多了。但我还没有找到一个具体解决这个问题的办法。

一、 与许多其他人一样,他们使用此代码段显示“低至”或“从”以代替显示的标准价格范围:

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;
}

它工作得很好,除了我需要这个代码来考虑任何“缺货”变量。

到目前为止,它将只显示最低的可变价格,如果它是“库存”。

我需要它显示最低价格,即使当前价格变量当前“缺货”。


共1个答案

匿名用户

我没有安装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框架)。对我或最终帮助你的人来说,增加细节是件好事。