PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.18.0
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.18.0
1.19.8 1.19.7 1.19.6 1.19.5 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.12.0 1.13.0 1.14.0 1.15.0 1.15.1 1.15.2 1.15.3 1.16.0 1.16.1 1.16.2 1.16.3 1.16.4 1.16.5 1.16.6 1.16.7 1.16.8 1.17.0 1.17.6 1.17.7 1.17.8 1.17.9 1.18.0 1.18.1 1.18.2 1.18.3 1.18.4 1.18.5 1.18.6 1.18.7 1.18.8 1.18.9 1.19.0 1.19.1 1.19.2 1.19.3 1.19.4 1.3.19 1.3.20 1.4.0 1.4.1 1.5.0 1.5.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.16 1.5.17 1.5.18 1.5.19 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.8.0 1.8.1 1.8.3 1.9.0 1.9.1 1.9.2
nitropack / classes / Integration / Plugin / WCML.php
nitropack / classes / Integration / Plugin Last commit date
ACF.php 1 year ago AdvancedMathCaptcha.php 3 years ago AeliaCurrencySwitcher.php 3 years ago BeaverBuilder.php 4 years ago CF_Helper.php 3 years ago CURCY_MultiCurrency.php 1 year ago Cloudflare.php 2 years ago CommonHelpers.php 3 years ago CookieNotice.php 4 years ago DownloadManager.php 4 years ago Elementor.php 3 years ago Ezoic.php 4 years ago FusionBuilder.php 4 years ago GeoTargetingWP.php 1 year ago GravityForms.php 2 years ago JetPackNP.php 3 years ago NginxHelper.php 2 years ago RC.php 3 years ago RankMathNP.php 3 years ago ShortPixel.php 4 years ago SquirrlySEO.php 3 years ago TheEventsCalendar.php 3 years ago ThriveTheme.php 4 years ago WCML.php 1 year ago WPBakeryNP.php 3 years ago WPCacheHelper.php 3 years ago WPForms.php 3 years ago WPML.php 1 year ago WPRocket.php 4 years ago WooCommerce.php 1 year ago WoocommerceCacheHandler.php 4 years ago YoastSEO.php 3 years ago
WCML.php
102 lines
1 <?php
2
3 /**
4 * WCML Class
5 *
6 * @package nitropack
7 */
8
9 namespace NitroPack\Integration\Plugin;
10
11 /**
12 * WCML Class
13 */
14 class WCML {
15 const STAGE = 'late';
16
17 /**
18 * Check if WooCommerce Multilingual is active
19 *
20 * @return bool
21 */
22 public static function isActive() { //phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
23 return is_plugin_active('woocommerce-multilingual/wpml-woocommerce.php');
24 }
25
26 /**
27 * Init function
28 *
29 * @param string $stage Stage.
30 *
31 * @return void
32 */
33 public function init($stage) { //phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found
34
35 if (!self::isActive()) return;
36
37 add_filter('wcml_user_store_strategy', [$this, 'change_wcml_user_store_strategy']);
38 add_action('wcml_switch_currency', [$this, 'wcml_set_custom_currency_cookie']);
39 add_action('woocommerce_init', [$this, 'wcml_set_custom_currency_cookie']);
40 add_action('woocommerce_init', [$this, 'wcml_set_custom_language_cookie']);
41
42 }
43 /**
44 * https://git.onthegosystems.com/glue-plugins/wpml/woocommerce-multilingual/-/wikis/Integrate-caching-for-multicurrency
45 * /wp-admin/edit.php?post_type=shop_order - becomes unresponsive, so we add the !is_admin() check
46 * @return string
47 */
48 public function change_wcml_user_store_strategy() {
49 if (!is_admin()) return 'cookie';
50 }
51 /**
52 * Set np_wc_currency currency cookie based on WCML currency
53 *
54 * @param string $currency Currency code - USD, EUR, etc.
55 *
56 * @return void
57 */
58 public function wcml_set_custom_currency_cookie($currency = false) {
59 if (is_admin() && ! (defined('DOING_AJAX') && DOING_AJAX)) {
60 return;
61 }
62
63 $cookie_expiration = time() + 604800; // 60 * 60 * 24 * 7 = 604800 seconds (1 week)
64
65 if (!empty($_COOKIE['wcml_client_currency'])) {
66 $cookie_value = $_COOKIE['wcml_client_currency'];
67 } else if ($currency) {
68 $cookie_value = $currency;
69 } else {
70 //uses default currency setup in WC
71 $cookie_value = get_woocommerce_currency();
72 }
73 setcookie('np_wc_currency', $cookie_value, $cookie_expiration, '/'); // 1 week
74 }
75
76 /**
77 * Set np_wc_currency_language custom language cookie based on WCML or fallbacks to WP language - 'en', 'de', etc.
78 *
79 * @return void
80 */
81 public function wcml_set_custom_language_cookie() {
82 if (is_admin() && ! (defined('DOING_AJAX') && DOING_AJAX)) {
83 return;
84 }
85 $cookie_expiration = time() + 604800; // 60 * 60 * 24 * 7 = 604800 seconds (1 week)
86
87 $wcCurrencyLanguage = (isset(WC()->session) && WC()->session->has_session()) ? WC()->session->get("client_currency_language") : 0;
88
89 if (!empty($_COOKIE['wcml_client_currency_language'])) {
90 $cookie_value = $_COOKIE['wcml_client_currency_language'];
91 } else if ($wcCurrencyLanguage) {
92 $cookie_value = $wcCurrencyLanguage;
93 } else {
94 /** Fallbacks to WP default language **/
95 $locale = get_locale();
96 $lang = substr($locale, 0, 2); //Converts 'en_GB' to 'en'
97 $cookie_value = $lang;
98 }
99 setcookie('np_wc_currency_language', $cookie_value, $cookie_expiration, '/');
100 }
101 }
102