如何获得 woocommerce 优惠券折扣首先从最低价商品计算

how to get woocommerce coupon discount to calculate from the lowest priced item first

Woocommerce 优惠券折扣适用于限制 x 件商品时,从价格最高的商品而不是价格最低的商品开始计算折扣。

我正在尝试更改此默认设置,以便可以从价格最低的商品计算优惠券折扣。我找到了这个 Finding Lowest Price in Woocommerce Cart Items 但代码已过时,导致 php 错误。

我发现代码参考自 class-wc-discounts.php

$coupon_amount = $coupon->get_amount();

    foreach ( $items_to_apply as $item ) {
        // Find out how much price is available to discount for the item.
        $discounted_price = $this->get_discounted_price_in_cents( $item );

        // Get the price we actually want to discount, based on settings.
        $price_to_discount = ( 'yes' === get_option( 'woocommerce_calc_discounts_sequentially', 'no' ) ) ? $discounted_price : round( $item->price );

        // See how many and what price to apply to.
        $apply_quantity    = $limit_usage_qty && ( $limit_usage_qty - $applied_count ) < $item->quantity ? $limit_usage_qty - $applied_count : $item->quantity;
        $apply_quantity    = max( 0, apply_filters( 'woocommerce_coupon_get_apply_quantity', $apply_quantity, $item, $coupon, $this ) );
        $price_to_discount = ( $price_to_discount / $item->quantity ) * $apply_quantity;

任何人都可以提供任何帮助和指导吗?

在查看代码数小时后,答案确实在 class-wc-discounts。php

这是原代码:

    /**
 * Sort by price.
 *
 * @since  3.2.0
 * @param  array $a First element.
 * @param  array $b Second element.
 * @return int
 */
protected function sort_by_price( $a, $b ) {
    $price_1 = $a->price * $a->quantity;
    $price_2 = $b->price * $b->quantity;
    if ( $price_1 === $price_2 ) {
        return 0;
    }
    return ( $price_1 < $price_2 ) ? 1 : -1;
}

所以我只是将这一行 ( $price_1 < $price_2 ) ? 1 : -1; 更改为 ( $price_1 < $price_2 ) ? -1 : 1;,然后从最低价格到最高价格进行排序。

不确定这是否是最好的技巧,但问题已解决..