在WooCommerce中获取最小变化价格。

问题描述 投票:2回答:2

我是一个初学者,试图学习Wordpress,有一个可变的产品与价格。

  • 编码250卢比
  • 在线200卢比

我想在我的主题中使用最低价格。functions.php.

我如何能够获取或获得最小值?

我想在下面的代码中使用。

function filter_gateways($gateways){

    $payment_NAME = 'cod'; // 
    $min_variation_price = ''; <--------------- minimum variation price

    global $woocommerce;

    foreach ($woocommerce->cart->cart_contents as $key => $values ) {
        // Get the terms, i.e. category list using the ID of the product
        $terms = get_the_terms( $values['product_id'], 'product_cat' );
        // Because a product can have multiple categories, we need to iterate through the list of the products category for a match
        foreach ($terms as $term) {
            // 20 is the ID of the category for which we want to remove the payment gateway
            if($term->term_id == $min_variation_price){
                unset($gateways[$payment_NAME]);
                // If you want to remove another payment gateway, add it here i.e. unset($gateways['cod']);
                break;
            }
            break;
        }
    }
    return $gateways;
}
php wordpress woocommerce categories product
2个回答
8
投票

在woocommerce中获取最小变化的活动价格,从一个 WC_Product_Variable 对象。

$variation_min_price = $product->get_variation_price('min');

看来你是想在购物车中的商品最小变化价格与他的商品类别ID相匹配时,取消设置 "cod "支付网关。

使用WordPress的条件函数 has_term() 将真正简化你的代码(它接受任何分类法的术语ID、术语插头或术语名称(如'product_cat'在这里代表产品类别)。

我想你的函数是在 woocommerce_available_payment_gateways 滤钩...

我对你的代码做了一些修改,因为它有点过时,而且有一些错误。

add_filter('woocommerce_available_payment_gateways', 'conditional_payment_gateways', 10, 1);
function conditional_payment_gateways( $available_gateways ) {
    // Not in backend (admin)
    if( is_admin() ) 
        return $available_gateways;

    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        // Get the WC_Product object
        $product = wc_get_product($cart_item['product_id']);
        // Only for variable products
        if($product->is_type('variable')){
            // Get the Variation "min" price
            $variation_min_price = $product->get_variation_price('min');
            // If the product category match with the variation 'min" price
            if( has_term( $variation_min_price, 'product_cat', $cart_item['product_id'] ) ){
                // Cash on delivery (cod) payment gateway
                unset($available_gateways['cod']); // unset 'cod'
                break; // stop the loop
            }
        }
    }
    return $available_gateways;
}

代码在你的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。

这应该工作 (但我无法真正测试它,因为它对产品类别ID和最小变化价格非常具体)


相关答案

如果达到购物车商品数量限制,则禁用WooCommerce的支付方式。


2
投票

我想你是在找那个:

add_filter( 'woocommerce_variable_sale_price_html', 'get_min_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'get_min_variation_price_format', 10, 2 );

function get_min_variation_price_format( $price, $product ) {
    $min_variation_price = $product->get_variation_regular_price( 'min');
    return wc_price($min_variation_price);
}
© www.soinside.com 2019 - 2024. All rights reserved.