function process_post($post_id)
 {
     global $wpdb, $wp_rewrite, $sitepress;
     if (!isset($wp_rewrite)) {
         require_once ABSPATH . WPINC . '/rewrite.php';
         $wp_rewrite = new WP_Rewrite();
     }
     $rewrite = $wp_rewrite->wp_rewrite_rules();
     delete_post_meta($post_id, '_alp_broken_links');
     $post = $wpdb->get_row("SELECT * FROM {$wpdb->posts} WHERE ID={$post_id}");
     $home_url = $sitepress->language_url($_POST['icl_post_language']);
     $int1 = preg_match_all('@<a([^>]*)href="((' . rtrim($home_url, '/') . ')?/([^"^>^#]+))"([^>]*)>@i', $post->post_content, $alp_matches1);
     $int2 = preg_match_all('@<a([^>]*)href=\'((' . rtrim($home_url, '/') . ')?/([^\'^>^#]+))\'([^>]*)>@i', $post->post_content, $alp_matches2);
     for ($i = 0; $i < 6; $i++) {
         $alp_matches[$i] = array_merge((array) $alp_matches1[$i], (array) $alp_matches2[$i]);
     }
     $sitepress_settings = $sitepress->get_settings();
     if ($int1 || $int2) {
         $url_parts = parse_url(rtrim(get_option('home'), '/') . '/');
         foreach ($alp_matches[4] as $k => $m) {
             if (0 === strpos($m, 'wp-content')) {
                 continue;
             }
             if ($sitepress_settings['language_negotiation_type'] == 1) {
                 $m_orig = $m;
                 $exp = explode('/', $m, 2);
                 $lang = $exp[0];
                 if ($wpdb->get_var("SELECT code FROM {$wpdb->prefix}icl_languages WHERE code='{$lang}'")) {
                     $m = $exp[1];
                 } else {
                     $m = $m_orig;
                     unset($m_orig);
                     $lang = false;
                 }
             } elseif ($sitepress_settings['language_negotiation_type'] == 2) {
                 //
             }
             $pathinfo = '';
             $req_uri = '/' . $m;
             $req_uri_array = explode('?', $req_uri);
             $req_uri = $req_uri_array[0];
             // separate anchor
             $req_uri_array = explode('#', $req_uri);
             $req_uri = $req_uri_array[0];
             $anchor = $req_uri_array[1];
             $self = '/index.php';
             $home_path = parse_url(get_option('home'));
             if (isset($home_path['path'])) {
                 $home_path = $home_path['path'];
             } else {
                 $home_path = '';
             }
             $home_path = trim($home_path, '/');
             $req_uri = str_replace($pathinfo, '', rawurldecode($req_uri));
             $req_uri = trim($req_uri, '/');
             $req_uri = preg_replace("|^{$home_path}|", '', $req_uri);
             $req_uri = trim($req_uri, '/');
             $pathinfo = trim($pathinfo, '/');
             $pathinfo = preg_replace("|^{$home_path}|", '', $pathinfo);
             $pathinfo = trim($pathinfo, '/');
             $self = trim($self, '/');
             $self = preg_replace("|^{$home_path}|", '', $self);
             $self = trim($self, '/');
             if (!empty($pathinfo) && !preg_match('|^.*' . $wp_rewrite->index . '$|', $pathinfo)) {
                 $request = $pathinfo;
             } else {
                 // If the request uri is the index, blank it out so that we don't try to match it against a rule.
                 if ($req_uri == $wp_rewrite->index) {
                     $req_uri = '';
                 }
                 $request = $req_uri;
             }
             $this_request = $request;
             $request_match = $request;
             foreach ((array) $rewrite as $match => $query) {
                 // If the requesting file is the anchor of the match, prepend it
                 // to the path info.
                 if (!empty($req_uri) && strpos($match, $req_uri) === 0 && $req_uri != $request) {
                     $request_match = $req_uri . '/' . $request;
                 }
                 if (preg_match("!^{$match}!", $request_match, $matches) || preg_match("!^{$match}!", urldecode($request_match), $matches)) {
                     // Got a match.
                     $matched_rule = $match;
                     // Trim the query of everything up to the '?'.
                     $query = preg_replace("!^.+\\?!", '', $query);
                     // Substitute the substring matches into the query.
                     eval("@\$query = \"" . addslashes($query) . "\";");
                     $matched_query = $query;
                     // Parse the query.
                     parse_str($query, $perma_query_vars);
                     break;
                 }
             }
             $post_name = $category_name = $tax_name = false;
             if (isset($perma_query_vars['pagename'])) {
                 $post_name = preg_replace('#((.*)/)#', '', $perma_query_vars['pagename']);
                 $post_type = 'page';
             } elseif (isset($perma_query_vars['name'])) {
                 $post_name = $perma_query_vars['name'];
                 $post_type = 'post';
             } elseif (isset($perma_query_vars['category_name'])) {
                 $category_name = $perma_query_vars['category_name'];
             } else {
                 foreach ($this->custom_post_query_vars as $k => $v) {
                     if (isset($perma_query_vars[$v])) {
                         $post_name = $perma_query_vars[$v];
                         $post_type = $k;
                         $post_qv = $v;
                         break;
                     }
                 }
                 foreach ($this->taxonomies_query_vars as $k => $v) {
                     if (isset($perma_query_vars[$v])) {
                         $tax_name = $perma_query_vars[$v];
                         $tax_type = $v;
                         break;
                     }
                 }
             }
             if ($post_name) {
                 $name = $wpdb->escape($post_name);
                 //$post_type = isset($perma_query_vars['pagename']) ? 'page' : 'post';
                 $p = $wpdb->get_row("SELECT ID, post_type FROM {$wpdb->posts} WHERE post_name='{$name}' AND post_type ='{$post_type}'");
                 if ($p) {
                     if ($post_type == 'page') {
                         $qvid = 'page_id';
                     } else {
                         $qvid = 'p';
                     }
                     if ($sitepress_settings['language_negotiation_type'] == 1 && $lang) {
                         $langprefix = '/' . $lang;
                     } else {
                         $langprefix = '';
                     }
                     $perm_url = '(' . rtrim($home_url, '/') . ')?' . $langprefix . '/' . $m;
                     $regk = '@href=["\'](' . $perm_url . ')["\']@i';
                     if ($anchor) {
                         $anchor = "#" . $anchor;
                     } else {
                         $anchor = "";
                     }
                     // check if this is an offsite url
                     if ($p->post_type == 'page' && ($offsite_url = get_post_meta($p->ID, '_cms_nav_offsite_url', true))) {
                         $regv = 'href="' . $offsite_url . $anchor . '"';
                     } else {
                         $regv = 'href="' . '/' . ltrim($url_parts['path'], '/') . '?' . $qvid . '=' . $p->ID . $anchor . '"';
                     }
                     $def_url[$regk] = $regv;
                 } else {
                     $alp_broken_links[$alp_matches[2][$k]] = array();
                     $p = $wpdb->get_results("SELECT ID, post_type FROM {$wpdb->posts} WHERE post_name LIKE '{$name}%' AND post_type IN('post','page')");
                     if ($p) {
                         foreach ($p as $post_suggestion) {
                             if ($post_suggestion->post_type == 'page') {
                                 $qvid = 'page_id';
                             } else {
                                 $qvid = 'p';
                             }
                             $alp_broken_links[$alp_matches[2][$k]]['suggestions'][] = array('absolute' => '/' . ltrim($url_parts['path'], '/') . '?' . $qvid . '=' . $post_suggestion->ID, 'perma' => '/' . ltrim(str_replace(get_option('home'), '', get_permalink($post_suggestion->ID)), '/'));
                         }
                     }
                 }
             } elseif ($category_name) {
                 $name = $wpdb->escape($category_name);
                 $c = $wpdb->get_row("SELECT term_id FROM {$wpdb->terms} WHERE slug='{$name}'");
                 if ($c) {
                     /* not used ?? */
                     if ($sitepress_settings['language_negotiation_type'] == 1 && $lang) {
                         $langprefix = '/' . $lang;
                     } else {
                         $langprefix = '';
                     }
                     /* not used ?? */
                     $perm_url = '(' . rtrim($home_url, '/') . ')?' . $langprefix . '/' . $m;
                     $regk = '@href=[\'"](' . $perm_url . ')[\'"]@i';
                     $url_parts = parse_url(rtrim(get_option('home'), '/') . '/');
                     $regv = 'href="' . '/' . ltrim($url_parts['path'], '/') . '?cat_ID=' . $c->term_id . '"';
                     $def_url[$regk] = $regv;
                 } else {
                     $alp_broken_links[$alp_matches[2][$k]] = array();
                     $c = $wpdb->get_results("SELECT term_id FROM {$wpdb->terms} WHERE slug LIKE '{$name}%'");
                     if ($c) {
                         foreach ($c as $cat_suggestion) {
                             $alp_broken_links[$alp_matches[2][$k]]['suggestions'][] = array('absolute' => '?cat_ID=' . $cat_suggestion->term_id, 'perma' => '/' . ltrim(str_replace(get_option('home'), '', get_category_link($cat_suggestion->term_id)), '/'));
                         }
                     }
                 }
             } elseif ($tax_name) {
                 if ($sitepress_settings['language_negotiation_type'] == 1 && $lang) {
                     $langprefix = '/' . $lang;
                 } else {
                     $langprefix = '';
                 }
                 $perm_url = '(' . rtrim($home_url, '/') . ')?' . $langprefix . '/' . $m;
                 $regk = '@href=["\'](' . $perm_url . ')["\']@i';
                 if ($anchor) {
                     $anchor = "#" . $anchor;
                 } else {
                     $anchor = "";
                 }
                 $regv = 'href="' . '/' . ltrim($url_parts['path'], '/') . '?' . $tax_type . '=' . $tax_name . $anchor . '"';
                 $def_url[$regk] = $regv;
             }
         }
         $post_content = $post->post_content;
         if ($def_url) {
             $post_content = preg_replace(array_keys($def_url), array_values($def_url), $post_content);
         }
         $tx_qvs = is_array($this->taxonomies_query_vars) && !empty($this->taxonomies_query_vars) ? '|' . join('|', $this->taxonomies_query_vars) : '';
         $post_qvs = is_array($this->custom_posts_query_vars) && !empty($this->custom_posts_query_vars) ? '|' . join('|', $this->custom_posts_query_vars) : '';
         $int = preg_match_all('@href=[\'"](' . rtrim(get_option('home'), '/') . '/?\\?(p|page_id' . $tx_qvs . $post_qvs . ')=([0-9a-z-]+)(#.+)?)[\'"]@i', $post_content, $matches2);
         if ($int) {
             $url_parts = parse_url(rtrim(get_option('home'), '/') . '/');
             $post_content = preg_replace('@href=[\'"](' . rtrim(get_option('home'), '/') . '/?\\?(p|page_id' . $tx_qvs . $post_qvs . ')=([0-9a-z-]+)(#.+)?)[\'"]@i', 'href="' . '/' . ltrim($url_parts['path'], '/') . '?$2=$3$4"', $post_content);
         }
         if ($post_content) {
             $wpdb->update($wpdb->posts, array('post_content' => $post_content), array('ID' => $post_id));
         }
     }
     update_post_meta($post_id, '_alp_processed', time());
     if ($alp_broken_links) {
         update_post_meta($post_id, '_alp_broken_links', $alp_broken_links);
     }
 }
Пример #2
0
 function _process_generic_text($source_text, &$alp_broken_links)
 {
     global $wpdb, $wp_rewrite, $sitepress, $sitepress_settings;
     $sitepress_settings = $sitepress->get_settings();
     $default_language = $sitepress->get_default_language();
     $current_language = $sitepress->get_current_language();
     $cache_key_args = array($default_language, $current_language, md5($source_text), md5(implode('', $alp_broken_links)));
     $cache_key = md5(json_encode($cache_key_args));
     $cache_group = '_process_generic_text';
     $found = false;
     $text = wp_cache_get($cache_key, $cache_group, false, $found);
     if ($found) {
         return $text;
     }
     $text = $source_text;
     if (!isset($wp_rewrite)) {
         require_once ABSPATH . WPINC . '/rewrite.php';
         $wp_rewrite = new WP_Rewrite();
     }
     if ($current_language == $default_language) {
         $rewrite = $wp_rewrite->wp_rewrite_rules();
     } else {
         remove_filter('option_rewrite_rules', array($sitepress, 'rewrite_rules_filter'));
         if (class_exists('WPML_Slug_Translation')) {
             remove_filter('option_rewrite_rules', array('WPML_Slug_Translation', 'rewrite_rules_filter'), 1);
         }
         $rewrite = $wp_rewrite->wp_rewrite_rules();
         add_filter('option_rewrite_rules', array($sitepress, 'rewrite_rules_filter'));
         if (class_exists('WPML_Slug_Translation')) {
             add_filter('option_rewrite_rules', array('WPML_Slug_Translation', 'rewrite_rules_filter'), 1, 1);
         }
     }
     $rewrite = $this->all_rewrite_rules($rewrite);
     $home_url = $sitepress->language_url(empty($_POST['icl_post_language']) ? false : $_POST['icl_post_language']);
     if ($sitepress_settings['language_negotiation_type'] == 3) {
         $home_url = preg_replace("#\\?lang=([a-z-]+)#i", '', $home_url);
     }
     $home_url = str_replace("?", "\\?", $home_url);
     if ($sitepress_settings['urls']['directory_for_default_language']) {
         $default_language = $sitepress->get_default_language();
         $home_url = str_replace($default_language . "/", "", $home_url);
     }
     $int1 = preg_match_all('@<a([^>]*)href="((' . rtrim($home_url, '/') . ')?/([^"^>^\\[^\\]]+))"([^>]*)>@i', $text, $alp_matches1);
     $int2 = preg_match_all('@<a([^>]*)href=\'((' . rtrim($home_url, '/') . ')?/([^\'^>^\\[^\\]]+))\'([^>]*)>@i', $text, $alp_matches2);
     $alp_matches = array();
     for ($i = 0; $i < 6; $i++) {
         $alp_matches[$i] = array_merge((array) $alp_matches1[$i], (array) $alp_matches2[$i]);
     }
     if ($int1 || $int2) {
         $url_parts = parse_url(rtrim(get_home_url(), '/') . '/');
         foreach ($alp_matches[4] as $k => $m) {
             if (0 === strpos($m, 'wp-content')) {
                 continue;
             }
             $lang = false;
             if ($sitepress_settings['language_negotiation_type'] == 1 && $sitepress_settings['urls']['directory_for_default_language'] != 1) {
                 $m_orig = $m;
                 $exp = explode('/', $m, 2);
                 $lang = $exp[0];
                 if ($wpdb->get_var("SELECT code FROM {$wpdb->prefix}icl_languages WHERE code='{$lang}'")) {
                     $m = $exp[1];
                 } else {
                     $m = $m_orig;
                     unset($m_orig);
                     $lang = false;
                 }
             }
             $pathinfo = '';
             $req_uri = '/' . $m;
             $req_uri_array = explode('?', $req_uri);
             $req_uri = $req_uri_array[0];
             $req_uri_params = '';
             if (isset($req_uri_array[1])) {
                 $req_uri_params = $req_uri_array[1];
             }
             // separate anchor
             $req_uri_array = explode('#', $req_uri);
             $req_uri = $req_uri_array[0];
             $anchor = isset($req_uri_array[1]) ? $req_uri_array[1] : false;
             $home_path = parse_url(get_home_url());
             if (isset($home_path['path'])) {
                 $home_path = $home_path['path'];
             } else {
                 $home_path = '';
             }
             $home_path = trim($home_path, '/');
             $req_uri = str_replace($pathinfo, '', rawurldecode($req_uri));
             $req_uri = trim($req_uri, '/');
             $req_uri = preg_replace("|^{$home_path}|", '', $req_uri);
             $req_uri = trim($req_uri, '/');
             $pathinfo = trim($pathinfo, '/');
             $pathinfo = preg_replace("|^{$home_path}|", '', $pathinfo);
             $pathinfo = trim($pathinfo, '/');
             if (!empty($pathinfo) && !preg_match('|^.*' . $wp_rewrite->index . '$|', $pathinfo)) {
                 $request = $pathinfo;
             } else {
                 // If the request uri is the index, blank it out so that we don't try to match it against a rule.
                 if ($req_uri == $wp_rewrite->index) {
                     $req_uri = '';
                 }
                 $request = $req_uri;
             }
             $request_match = $request;
             $permalink_query_vars = array();
             foreach ((array) $rewrite as $match => $query) {
                 // If the requesting file is the anchor of the match, prepend it
                 // to the path info.
                 if (!empty($req_uri) && strpos($match, $req_uri) === 0 && $req_uri != $request) {
                     $request_match = $req_uri . '/' . $request;
                 }
                 if (preg_match("!^{$match}!", $request_match, $matches) || preg_match("!^{$match}!", urldecode($request_match), $matches)) {
                     // Got a match.
                     // Trim the query of everything up to the '?'.
                     $query = preg_replace("!^.+\\?!", '', $query);
                     // Substitute the substring matches into the query.
                     $query = addslashes(WP_MatchesMapRegex::apply($query, $matches));
                     // Parse the query.
                     parse_str($query, $permalink_query_vars);
                     break;
                 }
             }
             $post_name = $category_name = $tax_name = false;
             if (isset($permalink_query_vars['pagename'])) {
                 $icl_post_lang = isset($_POST['icl_post_language']) ? $_POST['icl_post_language'] : $current_language;
                 $sitepress->switch_lang($icl_post_lang);
                 $page_by_path = get_page_by_path($permalink_query_vars['pagename']);
                 $sitepress->switch_lang($current_language);
                 if (!empty($page_by_path->post_type)) {
                     $post_name = $permalink_query_vars['pagename'];
                     $post_type = 'page';
                 } else {
                     $post_name = $permalink_query_vars['pagename'];
                     $post_type = 'post';
                 }
             } elseif (isset($permalink_query_vars['name'])) {
                 $post_name = $permalink_query_vars['name'];
                 $post_type = 'post';
             } elseif (isset($permalink_query_vars['category_name'])) {
                 $category_name = $permalink_query_vars['category_name'];
             } elseif (isset($permalink_query_vars['p'])) {
                 // case or /archives/%post_id
                 $post_data_prepared = $wpdb->prepare("SELECT post_type, post_name FROM {$wpdb->posts} WHERE id=%d", $permalink_query_vars['p']);
                 list($post_type, $post_name) = $wpdb->get_row($post_data_prepared, ARRAY_N);
             } else {
                 if (empty($this->custom_post_query_vars) or empty($this->taxonomies_query_vars)) {
                     $this->init_query_vars();
                 }
                 foreach ($this->custom_post_query_vars as $query_vars_key => $query_vars_value) {
                     if (isset($permalink_query_vars[$query_vars_value])) {
                         $post_name = $permalink_query_vars[$query_vars_value];
                         $post_type = $query_vars_key;
                         break;
                     }
                 }
                 foreach ($this->taxonomies_query_vars as $query_vars_value) {
                     if (isset($permalink_query_vars[$query_vars_value])) {
                         $tax_name = $permalink_query_vars[$query_vars_value];
                         $tax_type = $query_vars_value;
                         break;
                     }
                 }
             }
             if ($post_name && isset($post_type)) {
                 $icl_post_lang = isset($_POST['icl_post_language']) ? $_POST['icl_post_language'] : $current_language;
                 $sitepress->switch_lang($icl_post_lang);
                 $p = get_page_by_path($post_name, OBJECT, $post_type);
                 $sitepress->switch_lang($current_language);
                 if (empty($p)) {
                     // fail safe
                     if ($post_id = url_to_postid($home_path . '/' . $post_name)) {
                         $p = get_post($post_id);
                     }
                 }
                 if ($p) {
                     if ($post_type == 'page') {
                         $qvid = 'page_id';
                     } else {
                         $qvid = 'p';
                     }
                     if ($sitepress_settings['language_negotiation_type'] == 1 && $lang) {
                         $langprefix = '/' . $lang;
                     } else {
                         $langprefix = '';
                     }
                     $perm_url = '(' . rtrim($home_url, '/') . ')?' . $langprefix . '/' . str_replace('?', '\\?', $m);
                     $regk = '@href=["\'](' . $perm_url . ')["\']@i';
                     if ($anchor) {
                         $anchor = "#" . $anchor;
                     } else {
                         $anchor = "";
                     }
                     // check if this is an offsite url
                     if ($p->post_type == 'page' && ($offsite_url = get_post_meta($p->ID, '_cms_nav_offsite_url', true))) {
                         $regv = 'href="' . $offsite_url . $anchor . '"';
                     } else {
                         $regv = 'href="' . '/' . ltrim($url_parts['path'], '/') . '?' . $qvid . '=' . $p->ID;
                         if ($req_uri_params != '') {
                             $regv .= '&' . $req_uri_params;
                         }
                         $regv .= $anchor . '"';
                     }
                     $def_url[$regk] = $regv;
                 } else {
                     $alp_broken_links[$alp_matches[2][$k]] = array();
                     $name = esc_sql($post_name);
                     $p = $wpdb->get_results("SELECT ID, post_type FROM {$wpdb->posts} WHERE post_name LIKE '{$name}%' AND post_type IN('post','page')");
                     if ($p) {
                         foreach ($p as $post_suggestion) {
                             if ($post_suggestion->post_type == 'page') {
                                 $qvid = 'page_id';
                             } else {
                                 $qvid = 'p';
                             }
                             $alp_broken_links[$alp_matches[2][$k]]['suggestions'][] = array('absolute' => '/' . ltrim($url_parts['path'], '/') . '?' . $qvid . '=' . $post_suggestion->ID, 'perma' => '/' . ltrim(str_replace(site_url(), '', get_permalink($post_suggestion->ID)), '/'));
                         }
                     }
                 }
             } elseif ($category_name) {
                 if (false !== strpos($category_name, '/')) {
                     $splits = explode('/', $category_name);
                     $category_name = array_pop($splits);
                     $category_parent = array_pop($splits);
                     $category_parent_id = $wpdb->get_var($wpdb->prepare("SELECT term_id FROM {$wpdb->terms} WHERE slug=%s", $category_parent));
                     $c = $wpdb->get_row($wpdb->prepare("SELECT t.term_id FROM {$wpdb->terms} t JOIN {$wpdb->term_taxonomy} x ON x.term_id=t.term_id AND x.taxonomy='category' AND x.parent=%d AND t.slug=%s", $category_parent_id, $category_name));
                 } else {
                     $c = $wpdb->get_row($wpdb->prepare("SELECT term_id FROM {$wpdb->terms} WHERE slug=%s", $category_name));
                 }
                 if ($c) {
                     /* not used ?? */
                     if ($sitepress_settings['language_negotiation_type'] == 1 && $lang) {
                         $langprefix = '/' . $lang;
                     } else {
                         $langprefix = '';
                     }
                     /* not used ?? */
                     $perm_url = '(' . rtrim($home_url, '/') . ')?' . $langprefix . '/' . $m;
                     $regk = '@href=[\'"](' . $perm_url . ')[\'"]@i';
                     $url_parts = parse_url(rtrim(get_home_url(), '/') . '/');
                     $regv = 'href="' . '/' . ltrim($url_parts['path'], '/') . '?cat_ID=' . $c->term_id . '"';
                     $def_url[$regk] = $regv;
                 } elseif (isset($name)) {
                     $alp_broken_links[$alp_matches[2][$k]] = array();
                     $c_prepared = $wpdb->prepare("SELECT term_id FROM {$wpdb->terms} WHERE slug LIKE %s", array($name . '%'));
                     $c = $wpdb->get_results($c_prepared);
                     if ($c) {
                         foreach ($c as $cat_suggestion) {
                             $perma = '/' . ltrim(str_replace(get_home_url(), '', get_category_link($cat_suggestion->term_id)), '/');
                             $alp_broken_links[$alp_matches[2][$k]]['suggestions'][] = array('absolute' => '?cat_ID=' . $cat_suggestion->term_id, 'perma' => $perma);
                         }
                     }
                 }
             } elseif ($tax_name && isset($tax_type)) {
                 if ($sitepress_settings['language_negotiation_type'] == 1 && $lang) {
                     $langprefix = '/' . $lang;
                 } else {
                     $langprefix = '';
                 }
                 $perm_url = '(' . rtrim($home_url, '/') . ')?' . $langprefix . '/' . $m;
                 $regk = '@href=["\'](' . $perm_url . ')["\']@i';
                 if ($anchor) {
                     $anchor = "#" . $anchor;
                 } else {
                     $anchor = "";
                 }
                 $regv = 'href="' . '/' . ltrim($url_parts['path'], '/') . '?' . $tax_type . '=' . $tax_name . $anchor . '"';
                 $def_url[$regk] = $regv;
             }
         }
         if (!empty($def_url)) {
             $text = preg_replace(array_keys($def_url), array_values($def_url), $text);
         }
         $tx_qvs = !empty($this->taxonomies_query_vars) && is_array($this->taxonomies_query_vars) ? '|' . join('|', $this->taxonomies_query_vars) : '';
         $post_qvs = !empty($this->custom_posts_query_vars) && is_array($this->custom_posts_query_vars) ? '|' . join('|', $this->custom_posts_query_vars) : '';
         $int = preg_match_all('@href=[\'"](' . rtrim(get_home_url(), '/') . '/?\\?(p|page_id' . $tx_qvs . $post_qvs . ')=([0-9a-z-]+)(#.+)?)[\'"]@i', $text, $matches2);
         if ($int) {
             $url_parts = parse_url(rtrim(get_home_url(), '/') . '/');
             $text = preg_replace('@href=[\'"](' . rtrim(get_home_url(), '/') . '/?\\?(p|page_id' . $tx_qvs . $post_qvs . ')=([0-9a-z-]+)(#.+)?)[\'"]@i', 'href="' . '/' . ltrim($url_parts['path'], '/') . '?$2=$3$4"', $text);
         }
     }
     wp_cache_set($cache_key, $text, $cache_group);
     return $text;
 }
 private function initialize_rewrite($current_language, $default_language, $sitepress)
 {
     global $wp_rewrite;
     if (!isset($wp_rewrite)) {
         require_once ABSPATH . WPINC . '/rewrite.php';
         $wp_rewrite = new WP_Rewrite();
     }
     if ($current_language == $default_language) {
         $rewrite = $wp_rewrite->wp_rewrite_rules();
     } else {
         remove_filter('option_rewrite_rules', array($sitepress, 'rewrite_rules_filter'));
         if (class_exists('WPML_Slug_Translation')) {
             remove_filter('option_rewrite_rules', array('WPML_Slug_Translation', 'rewrite_rules_filter'), 1);
         }
         $rewrite = $wp_rewrite->wp_rewrite_rules();
         if (class_exists('WPML_Slug_Translation')) {
             add_filter('option_rewrite_rules', array('WPML_Slug_Translation', 'rewrite_rules_filter'), 1, 1);
         }
     }
     return $this->all_rewrite_rules($rewrite);
 }