function all_rewrite_rules($rewrite) { global $sitepress; if (!class_exists('WPML_Slug_Translation')) { return $rewrite; } $active_languages = $sitepress->get_active_languages(); $current_language = $sitepress->get_current_language(); $default_language = $sitepress->get_default_language(); $cache_keys = array($current_language, $default_language); $cache_keys[] = md5(serialize($active_languages)); $cache_keys[] = md5(serialize($rewrite)); $cache_key = implode(':', $cache_keys); $cache_group = 'all_rewrite_rules'; $cache_found = false; $final_rules = wp_cache_get($cache_key, $cache_group, false, $cache_found); if ($cache_found) { return $final_rules; } $final_rules = $rewrite; foreach ($active_languages as $next_language) { if ($next_language['code'] == $default_language) { continue; } $sitepress->switch_lang($next_language['code']); $translated_rules = WPML_Slug_Translation::rewrite_rules_filter($final_rules); if (is_array($translated_rules) && is_array($final_rules)) { $new_rules = array_diff_assoc($translated_rules, $final_rules); $final_rules = array_merge($new_rules, $final_rules); } } $sitepress->switch_lang($current_language); wp_cache_set($cache_key, $final_rules, $cache_group); return $final_rules; }