function sfput_extra_permastructs($rules) { global $wp_rewrite, $polylang; if (empty($rules)) { // Uh? oO return $rules; } $languages = $polylang->model->get_languages_list(array('fields' => 'slug')); // If Polylang doesn't add the /{default_lang}/ in the URL, no need to modify the rules for this lang, sfput_registered_post_type() took care of it earlier. if ($polylang->options['hide_default']) { $languages = array_diff($languages, array($polylang->options['default_lang'])); } if (empty($languages)) { return $rules; } // The way Polylang built its regex. $imploded_langs = '(' . implode('|', $languages) . ')/'; $poly_slug = $wp_rewrite->root . ($polylang->options['rewrite'] ? '' : 'language/') . $imploded_langs; // So, why are we here? $filter = str_replace('_rewrite_rules', '', current_filter()); $post_types = sfput_get_post_types(); $taxonomies = sfput_get_taxonomies(); // Post type, single if (!empty($post_types[$filter])) { $slugs = sfput_get_option('post_types.single'); $slug = sfput_get_post_type_singular_slug($filter); if (empty($slugs[$filter]) || empty($slug)) { // Uh? oO return $rules; } } elseif (!empty($taxonomies[$filter])) { $slugs = sfput_get_option('taxonomies'); $slug = sfput_get_taxonomy_slug($filter); if (empty($slugs[$filter]) || empty($slug)) { // Uh? oO return $rules; } } else { // Uh? oO return $rules; } // Replacements $new_rules = array(); $slugs = $slugs[$filter]; foreach ($rules as $regex => $rule) { if (strpos($regex, $poly_slug) !== 0) { $new_rules[$regex] = $rule; continue; } foreach ($languages as $language) { $new_regex = str_replace_once($imploded_langs, '(' . $language . ')/', $regex); $new_regex = str_replace_once('/' . $slug . '/', '/' . $slugs[$language] . '/', '/' . $new_regex); $new_regex = ltrim($new_regex, '/'); $new_rules[$new_regex] = $rule; } } return $new_rules; }
function sfput_default_taxonomy_slug($taxonomy) { if (is_object($taxonomy)) { $taxonomy = $taxonomy->name; } if (!$taxonomy || !is_string($taxonomy)) { return false; } $slug = sf_cache_data('sfput_original_slugs-taxo-' . $taxonomy); return $slug ? $slug : sfput_get_taxonomy_slug($taxonomy); }