PHP还是JS? WooCommerce将小数位分割/格式化为两行

时间:2016-10-07 07:58:21

标签: javascript php woocommerce decimalformat

我需要自定义 WooCommerce 产品价格显示。 我需要格式化视图以显示小于等于货币符号的小数位

enter image description here

我真的需要编辑核心文件吗?有没有人有类似的问题?

2 个答案:

答案 0 :(得分:1)

这是一个想法(我自己测试过)。当您进入覆盖模板时,您可以获得$product->get_price_html如何运行正则表达式来分隔浮点数。然后,使用the将该数字分解为数组。分隔符。

说你在woocommerce/single-product/price.php(当然是从插件复制到主题中)

preg_match('!\d+(?:\.\d+)?!', $product->get_price_html(), $matches);
$price_parts = explode('.', $matches[0]);
print_r($price_parts); // for example outputs array('45', '00');

更好的是,您可以获得原始价格并忘记正则表达式。然后单独获取货币。

$price_parts    = explode('.', $product->price);
$currency       = get_option('woocommerce_currency');
$currency_symbol= get_woocommerce_currency_symbol();

$price_html     = '<span class="price-big-number">'.$price_parts[0].'</span>';
$price_html     .='<span class="price-small-number">'.$price_parts[1].'</span>';
$price_html     .='<span class="price-currency">'.$currency.'</span>';

答案 1 :(得分:1)

您绝对不需要编辑核心文件。 使用过滤器

  

formatted_woocommerce_price

在显示产品价格的所有网页上应用您的更改(包括&#39; shop&#39;,&#39; single-product&#39;,&#39; cart&#39;,&#39; checkout& #39;)

E.g。

 private void initilizeMap() {
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    // check if map is created successfully or not
    if (googleMap == null) {
        Toast.makeText(getApplicationContext(),
                "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                .show();
    }
}

@Override
public void onMapReady(GoogleMap map) {
    googleMap = map;
    map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    map.setTrafficEnabled(true);
    map.setIndoorEnabled(true);
    map.setBuildingsEnabled(true);
    map.getUiSettings().setZoomControlsEnabled(true);
}