PATH:
home
/
sparklp6
/
public_html
/
website_356c8563
/
wp-content
/
plugins
/
ajax-search-lite
/
src
/
server
/
Utils
<?php namespace WPDRMS\ASL\Utils; defined('ABSPATH') or die("You can't access this file directly."); class WooCommerce { /** * Gets the WooCommerce formatted currency, supporting multiple currencies WPML, WCML * * @param $id - Product or variation ID * @param $field - Field label * @param $currency - Currency */ public static function formattedPriceWithCurrency( $id, $field, ?string $currency = null ) { global $woocommerce_wpml; global $sitepress; $currency = $currency ?? ( function_exists('get_woocommerce_currency') ? get_woocommerce_currency() : '' ); $p = wc_get_product( $id ); // WCML Section, copied and modified from // ..\wp-content\plugins\wpml-woocommerce\inc\currencies\class-wcml-multi-currency-prices.php // line 139, function product_price_filter(..) if ( isset($sitepress, $woocommerce_wpml, $woocommerce_wpml->multi_currency) ) { $original_object_id = apply_filters( 'translate_object_id', $id, get_post_type($id), false, $sitepress->get_default_language() ); $ccr = get_post_meta($original_object_id, '_custom_conversion_rate', true); if ( in_array($field, array( '_price', '_regular_price', '_sale_price', '_price_html' )) && !empty($ccr) && isset($ccr[ $field ][ $currency ]) ) { if ( $field == '_price_html' ) { $field = '_price'; } $price_original = get_post_meta($original_object_id, $field, true); $price = $price_original * $ccr[ $field ][ $currency ]; } else { $manual_prices = $woocommerce_wpml->multi_currency->custom_prices->get_product_custom_prices($id, $currency); if ( $field == '_price_html' ) { $field = '_price'; } if ( $manual_prices && !empty($manual_prices[ $field ]) ) { $price = $manual_prices[ $field ]; } else { // 2. automatic conversion $price = get_post_meta($id, $field, true); $price = apply_filters('wcml_raw_price_amount', $price, $currency ); } } if ( $price != '' ) { $price = wc_price($price, array( 'currency' => $currency )); } } else { // For variable products _regular_price, _sale_price are not defined // ..however are most likely used together. So in case of _regular_price display the range, // ..but do not deal with _sale_price at all if ( $p->is_type('variable') && $field != '_sale_price' ) { $price = $p->get_price_html(); } else { switch ( $field ) { case '_regular_price': $price = $p->get_regular_price(); break; case '_sale_price': if ( $p->is_on_sale() ) { $price = $p->get_sale_price(); } else { $price = ''; } break; case '_tax_price': $price = wc_get_price_including_tax($p); break; case '_price_html': $price = $p->get_price_html(); break; default: $price = $p->get_price(); break; } if ( $price != '' ) { if ( $field != '_price_html' ) { if ( $currency != '' ) { $price = wc_price($price, array( 'currency' => $currency )); } else { $price = wc_price($price); } } if ( $field === '_price_html' ) { $price = "<span class='price'>$price</span>"; } } } } return $price; } public static function isShop(): bool { // is_archive() required, otherwise warnings are thrown return function_exists('is_shop') && is_archive() && is_shop(); } }
[+]
Polylang
[-] .htaccess
[edit]
[-] Str.php
[edit]
[-] MB.php
[edit]
[-] WooCommerce.php
[edit]
[-] Post.php
[edit]
[-] User.php
[edit]
[+]
AdvancedField
[-] Html.php
[edit]
[+]
..