繁体   English   中英

根据产品类别更改默认产品货币

[英]Change default product currency based on a product category

我正在尝试根据类别更改 Woocommerce 的产品默认货币。

就像“音频”是一个类别,然后将 EUR 设置为货币。

我已经尝试了下面的代码,但它不起作用:

function change_woocommerce_currency( $currency ) {
    if ( is_product_category( 'audio' ) ) {
        $currency = 'EUR'; 
    }
    return $currency;
}
add_filter( 'woocommerce_currency', 'change_woocommerce_currency' );

需要在产品页面上更改货币价格以及要在购物车和结帐页面上显示的货币,并且需要以该类别的货币进行收费。

首先,您可以使用ACF创建一个自定义字段来存储 EUR 常规价格(例如:regular_price_eur)

然后,您可以根据类别过滤价格并更改其货币符号。

function filter_price( $price, $product ) {
  $price_in_eur = get_field( 'regular_price_eur', $product->get_id() ); // get EUR price from a custom field

  if ( $price_in_eur && is_product_category( 'audio' ) ) {
    return absint( $price_in_eur );
  } else {
    return $price;
  }
}
add_filter( 'woocommerce_product_get_price', 'filter_price', 10, 2 );

function change_currency_symbol( $currency ) {
  if ( is_product_category( 'audio' ) )  {
    return 'EUR';
  }

  return $currency;
}
add_filter( 'woocommerce_currency', 'change_currency_symbol' );

请试试这个

add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);
    function change_existing_currency_symbol( $currency_symbol, $currency ) {
        global $post, $product;
    
        if ( has_term( 'audio', 'product_cat' ) ) {
            switch( $currency ) {
                 case 'USD': $currency_symbol = 'EUR'; 
                 break;
            }
        }
        return $currency_symbol; // <== HERE
    }
function change_woocommerce_currency( $currency ) {
    $defaultCurrency = 'EUR';
    $categories = [
       'audio'  => 'EUR',
       'mobile' => 'LEK',  
     ];
    $productCategory = 'audio'; // get product's category
    return $categories[$productCategory] ?: $defaultCurrency;
}
add_filter( 'woocommerce_currency', 'change_woocommerce_currency' );

您有多种方法可以做到这一点。 首先,您可以使用一个插件,例如“WooCommerce 每种产品的货币”,这可以让您为任何您想要的项目添加特定的货币。

如果你想通过代码来做,这就是我的做法:

function change_woocommerce_currency( $currency_symbol, $currency ) {
  if ( is_product_category( 'audio' ) ) {
    switch( $currency ) {
      case 'USD': $currency_symbol = 'whatever you want'; 
      break;
      }
    }
    return $currency_symbol;
}
add_filter( 'woocommerce_currency', 'change_woocommerce_currency' );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM