PluginProbe ʕ •ᴥ•ʔ
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization / 1.19.6
NitroPack – Performance, Page Speed & Cache Plugin for Core Web Vitals, CDN & Image Optimization v1.19.6
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 2 weeks ago AdvancedMathCaptcha.php 1 month ago AeliaCurrencySwitcher.php 11 months ago BeaverBuilder.php 1 year ago CF_Helper.php 5 months ago CURCY_MultiCurrency.php 1 year ago Cloudflare.php 5 months ago CommonHelpers.php 1 year ago CookieNotice.php 1 year ago DownloadManager.php 1 year ago Elementor.php 5 months ago Ezoic.php 1 year ago FusionBuilder.php 1 year ago GeoTargetingWP.php 1 year ago GravityForms.php 1 month ago JetPackNP.php 1 year ago MPG.php 11 months ago NginxHelper.php 1 year ago RC.php 11 months ago RankMathNP.php 1 year ago ShortPixel.php 1 year ago SquirrlySEO.php 1 year ago TheEventsCalendar.php 1 month ago ThriveTheme.php 1 year ago WCML.php 1 year ago WPBakeryNP.php 1 year ago WPCacheHelper.php 1 year ago WPForms.php 1 year ago WPML.php 2 weeks ago WPRocket.php 1 year ago WooCommerce.php 2 weeks ago WoocommerceCacheHandler.php 1 year ago YoastSEO.php 1 year ago
WCML.php
108 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() )
36 return;
37
38 add_filter( 'wcml_user_store_strategy', [ $this, 'change_wcml_user_store_strategy' ] );
39 add_action( 'wcml_switch_currency', [ $this, 'wcml_set_custom_currency_cookie' ] );
40 add_action( 'woocommerce_init', [ $this, 'wcml_set_custom_currency_cookie' ] );
41 add_action( 'woocommerce_init', [ $this, 'wcml_set_custom_language_cookie' ] );
42
43 }
44 /**
45 * https://git.onthegosystems.com/glue-plugins/wpml/woocommerce-multilingual/-/wikis/Integrate-caching-for-multicurrency
46 * /wp-admin/edit.php?post_type=shop_order - becomes unresponsive, so we keep it wc-session
47 * @return string
48 */
49 public function change_wcml_user_store_strategy() {
50 if ( is_admin() ) {
51 if ( isset( $_GET['post_type'] ) && $_GET['post_type'] === 'shop_order' ) {
52 return 'wc-session';
53 }
54 }
55 return 'cookie';
56 }
57 /**
58 * Set np_wc_currency currency cookie based on WCML currency
59 *
60 * @param string $currency Currency code - USD, EUR, etc.
61 *
62 * @return void
63 */
64 public function wcml_set_custom_currency_cookie( $currency = false ) {
65 if ( is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
66 return;
67 }
68
69 $cookie_expiration = time() + 604800; // 60 * 60 * 24 * 7 = 604800 seconds (1 week)
70
71 if ( ! empty( $_COOKIE['wcml_client_currency'] ) ) {
72 $cookie_value = $_COOKIE['wcml_client_currency'];
73 } else if ( $currency ) {
74 $cookie_value = $currency;
75 } else {
76 //uses default currency setup in WC
77 $cookie_value = get_woocommerce_currency();
78 }
79 setcookie( 'np_wc_currency', $cookie_value, $cookie_expiration, '/' ); // 1 week
80 }
81
82 /**
83 * Set np_wc_currency_language custom language cookie based on WCML or fallbacks to WP language - 'en', 'de', etc.
84 *
85 * @return void
86 */
87 public function wcml_set_custom_language_cookie() {
88 if ( is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
89 return;
90 }
91 $cookie_expiration = time() + 604800; // 60 * 60 * 24 * 7 = 604800 seconds (1 week)
92
93 $wcCurrencyLanguage = ( isset( WC()->session ) && WC()->session->has_session() ) ? WC()->session->get( "client_currency_language" ) : 0;
94
95 if ( ! empty( $_COOKIE['wcml_client_currency_language'] ) ) {
96 $cookie_value = $_COOKIE['wcml_client_currency_language'];
97 } else if ( $wcCurrencyLanguage ) {
98 $cookie_value = $wcCurrencyLanguage;
99 } else {
100 /** Fallbacks to WP default language **/
101 $locale = get_locale();
102 $lang = substr( $locale, 0, 2 ); //Converts 'en_GB' to 'en'
103 $cookie_value = $lang;
104 }
105 setcookie( 'np_wc_currency_language', $cookie_value, $cookie_expiration, '/' );
106 }
107 }
108