/** * Generate frontend switch urls. * * @return array */ function generate_frontend_switch_urls() { global $wp_query; $urls = array(); $languages = $this->get_parent()->get_enabled_languages(); $taxonomy = $wp_query->queried_object->taxonomy; $term_id = $wp_query->queried_object->term_id; $translation_id = fw_get_term_meta($term_id, 'translation_id', true); $translated_terms = $this->query_translation($translation_id); foreach ($languages as $code => $name) { $translation_data = $this->translation_exists($translated_terms, $code); if (!empty($translation_data)) { global $wp_rewrite; $term_link = get_term_link((int) $translation_data['term_id'], $taxonomy); if ($wp_rewrite->using_permalinks()) { $term_link = preg_replace('/(\\/fw_lang\\/)(\\w+)/ix', '${1}' . $code, $term_link); $urls[$code] = $term_link; } else { remove_query_arg('fw_lang', $term_link); $urls[$code] = esc_url(add_query_arg(array('fw_lang' => $code), $term_link)); } } else { //translation did not exists for this post $urls[$code] = preg_replace('/(\\/fw_lang\\/)(\\w+)/ix', '${1}' . $code, get_home_url('/')); } } return $urls; }
/** * Generate backend switch urls. * * @param $term_id * * @return array */ public function generate_backend_switch_urls($term_id) { $urls = array(); $meta_translation_id = fw_get_term_meta($term_id, 'translation_id', true); $translate_id = empty($meta_translation_id) ? $term_id : $meta_translation_id; $translate_lang = (bool) fw_get_term_meta($term_id, 'translation_lang', true) ? fw_get_term_meta($term_id, 'translation_lang', true) : $this->get_parent()->get_admin_active_language(); $translated_terms = $this->query_translation($translate_id); $translation_languages = $this->get_parent()->get_enabled_languages_without($translate_lang); foreach ($translation_languages as $code => $language) { $translation_exists = $this->translation_exists($translated_terms, $code); if (empty($translation_exists)) { $args = array('action' => 'edit', 'menu' => 0, 'fw_translate_to' => $code); if ($translate_id > 0) { $args['fw_translate_id'] = $translate_id; } $urls[$code] = array('lang_name' => $language['name'], 'url' => esc_url(add_query_arg($args, admin_url('nav-menus.php'))), 'type' => 'add'); } else { $urls[$code] = array('lang_name' => $language['name'], 'url' => esc_url(add_query_arg(array('action' => 'edit', 'menu' => $translation_exists['term_id'], 'fw_translate_to' => $code), admin_url('nav-menus.php'))), 'type' => 'edit'); } } return $urls; }