admin-menus
2 weeks ago
currencies
2 weeks ago
template-classes
2 weeks ago
translation-editor
2 weeks ago
class-wcml-ajax-setup.php
2 weeks ago
class-wcml-attributes.php
2 weeks ago
class-wcml-capabilities.php
2 weeks ago
class-wcml-cart-removed-items-widget.php
1 year ago
class-wcml-cart-switch-lang-functions.php
2 weeks ago
class-wcml-cart-sync-warnings.php
2 weeks ago
class-wcml-cart.php
2 weeks ago
class-wcml-comments.php
2 weeks ago
class-wcml-compatibility.php
2 weeks ago
class-wcml-coupons.php
2 weeks ago
class-wcml-dependencies.php
2 weeks ago
class-wcml-emails.php
2 weeks ago
class-wcml-endpoints.php
2 weeks ago
class-wcml-install.php
2 weeks ago
class-wcml-languages-upgrader.php
2 weeks ago
class-wcml-locale.php
2 weeks ago
class-wcml-orders.php
2 weeks ago
class-wcml-products-screen-options.php
2 weeks ago
class-wcml-products.php
2 weeks ago
class-wcml-reports.php
2 weeks ago
class-wcml-requests.php
2 weeks ago
class-wcml-resources.php
2 weeks ago
class-wcml-store-pages.php
2 weeks ago
class-wcml-terms.php
2 weeks ago
class-wcml-tp-support.php
2 weeks ago
class-wcml-troubleshooting.php
2 weeks ago
class-wcml-upgrade.php
2 weeks ago
class-wcml-url-translation.php
2 weeks ago
class-wcml-wc-gateways.php
2 weeks ago
class-wcml-wc-shipping.php
2 weeks ago
class-wcml-wc-strings.php
2 weeks ago
class-wcml-widgets.php
2 weeks ago
constants.php
2 weeks ago
functions-pure.php
2 weeks ago
functions.php
2 weeks ago
installer-loader.php
2 weeks ago
missing-php-functions.php
2 weeks ago
wcml-core-functions.php
2 weeks ago
wcml-switch-lang-request.php
2 weeks ago
class-wcml-ajax-setup.php
47 lines
| 1 | <?php |
| 2 | |
| 3 | class WCML_Ajax_Setup { |
| 4 | |
| 5 | private $sitepress; |
| 6 | |
| 7 | public function __construct( SitePress $sitepress ) { |
| 8 | $this->sitepress = $sitepress; |
| 9 | } |
| 10 | |
| 11 | public function add_hooks() { |
| 12 | add_action( 'init', [ $this, 'init' ] ); |
| 13 | add_filter( 'woocommerce_ajax_get_endpoint', [ $this, 'add_language_to_endpoint' ] ); |
| 14 | } |
| 15 | |
| 16 | public function init() { |
| 17 | add_filter( 'woocommerce_get_script_data', [ $this, 'add_language_parameter_to_ajax_url' ] ); |
| 18 | add_action( 'woocommerce_checkout_order_review', [ $this, 'add_hidden_language_field' ] ); |
| 19 | } |
| 20 | |
| 21 | public function add_hidden_language_field() { |
| 22 | do_action( 'wpml_add_language_form_field' ); |
| 23 | } |
| 24 | |
| 25 | public function add_language_parameter_to_ajax_url( $woocommerce_params ) { |
| 26 | |
| 27 | if ( isset( $woocommerce_params['ajax_url'] ) && $this->sitepress->get_current_language() !== $this->sitepress->get_default_language() ) { |
| 28 | $woocommerce_params['ajax_url'] = add_query_arg( 'lang', $this->sitepress->get_wp_api()->constant( 'ICL_LANGUAGE_CODE' ), $woocommerce_params['ajax_url'] ); |
| 29 | } |
| 30 | |
| 31 | return $woocommerce_params; |
| 32 | } |
| 33 | |
| 34 | public function add_language_to_endpoint( $endpoint ) { |
| 35 | |
| 36 | $is_per_domain = WPML_LANGUAGE_NEGOTIATION_TYPE_DOMAIN === (int) $this->sitepress->get_setting( 'language_negotiation_type' ); |
| 37 | if ( $is_per_domain && $this->sitepress->get_current_language() != $this->sitepress->get_default_language() ) { |
| 38 | |
| 39 | $endpoint = add_query_arg( 'lang', $this->sitepress->get_current_language(), remove_query_arg( 'lang', $endpoint ) ); |
| 40 | $endpoint = urldecode( $endpoint ); |
| 41 | |
| 42 | } |
| 43 | |
| 44 | return $endpoint; |
| 45 | } |
| 46 | } |
| 47 |