Viewing File: /home/maglabs/greentech/wp-content/themes/porto/inc/functions/integrations/class-wpml.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Compatibilty with WPML plugins
*
* @package porto
* @since 7.2.0
*/
if ( ! class_exists( 'Porto_WPML' ) ) :
class Porto_WPML {
/**
* Instance
*/
public static $instance = null;
/**
* The active language
*/
private static $active_language = null;
/**
* Is the site using WPML?
*/
private static $is_wpml = false;
/**
* Is the site using PolyLang?
*/
private static $is_pll = false;
public static function get_instance() {
if ( null === self::$instance ) {
self::$instance = new Porto_WPML();
}
return self::$instance;
}
/**
* Constructor
*/
public function __construct() {
self::$is_pll = self::is_pll();
self::$is_wpml = self::is_wpml();
if ( self::$is_wpml ) {
$this->wpml_init();
}
if ( defined( 'WCML_VERSION' ) ) {
$this->wcml_init();
}
// localize script
if ( self::$is_pll || self::$is_wpml ) {
add_filter( 'porto_frontend_vars', array( $this, 'set_language_vars' ) );
}
}
/**
* Init WPML
*/
public function wpml_init() {
}
/**
* Init WCML
*/
public function wcml_init() {
add_filter( 'wcml_multi_currency_ajax_actions', array( $this, 'ajax_actions' ), 10, 1 );
}
public function ajax_actions( $ajax_actions ) {
$ajax_actions[] = 'porto_add_to_cart';
$ajax_actions[] = 'porto_product_quickview';
$ajax_actions[] = 'porto_recent_sale_products';
$ajax_actions[] = 'porto_ajax_posts';
$ajax_actions[] = 'porto_cart_item_remove';
$ajax_actions[] = 'porto_refresh_cart_fragment';
$ajax_actions[] = 'porto_woocommerce_shortcodes_products';
$ajax_actions[] = 'porto_update_cart_item';
$ajax_actions[] = 'porto_refresh_wishlist_count';
$ajax_actions[] = 'porto_load_wishlist';
return $ajax_actions;
}
/**
* Set language variables
*
* @since 7.2.4
*/
public function set_language_vars( $porto_vars ) {
$lang = self::get_active_language();
if ( $lang ) {
$porto_vars['ajax_url'] = esc_url( add_query_arg( 'lang', $lang, admin_url( 'admin-ajax.php' ) ) );
$porto_vars['active_lang'] = esc_js( $lang );
}
return $porto_vars;
}
/**
* Get active language code
*
* @since 7.2.4
*/
public function get_active_language() {
if ( null === self::$active_language ) {
if ( ! self::$is_pll && ! self::$is_wpml ) {
self::$active_language = '';
return self::$active_language;
}
if ( defined( 'ICL_LANGUAGE_CODE' ) ) {
self::$active_language = ICL_LANGUAGE_CODE;
if ( 'all' === ICL_LANGUAGE_CODE ) {
if ( self::$is_wpml ) {
global $sitepress;
self::$active_language = $sitepress->get_default_language();
} elseif ( self::$is_pll ) {
self::$active_language = pll_default_language( 'slug' );
}
}
return self::$active_language;
}
if ( function_exists( 'PLL' ) ) {
$pll_obj = PLL();
if ( is_object( $pll_obj ) && property_exists( $pll_obj, 'curlang' ) ) {
if ( is_object( $pll_obj->curlang ) && property_exists( $pll_obj->curlang, 'slug' ) ) {
self::$active_language = $pll_obj->curlang->slug;
} elseif ( false === $pll_obj->curlang ) {
self::$active_language = 'all';
}
}
}
}
return self::$active_language;
}
/**
* Determine if the site is using WPML
*
* @since 7.2.4
*/
public static function is_wpml() {
return ( ( defined( 'WPML_PLUGIN_FILE' ) || defined( 'ICL_PLUGIN_FILE' ) ) && false === self::$is_pll ) ? true : false;
}
/**
* Determine if the site is using PolyLang
*
* @since 7.2.4
*/
public static function is_pll() {
if ( function_exists( 'pll_default_language' ) ) {
return true;
}
return false;
}
}
Porto_WPML::get_instance();
endif;
Back to Directory
File Manager