/** * @param string $slug * @param string|bool $language * * @return string */ function get_translated_slug($slug, $language = false) { if ($slug) { $current_language = $this->sitepress->get_current_language(); $language = $language ? $language : $current_language; if (!isset($this->translated_slugs[$slug][$language])) { $slugs_translations = $this->wpdb->get_results($this->wpdb->prepare("SELECT t.value, t.language\r\n\t\t\t\t\t\t\t\t\t\tFROM {$this->wpdb->prefix}icl_strings s\r\n\t\t\t\t\t\t\t\t\t\tJOIN {$this->wpdb->prefix}icl_string_translations t ON t.string_id = s.id\r\n\t\t\t\t\t\t\t\t\t\tWHERE s.name = %s\r\n\t\t\t\t\t\t\t\t\t\t AND (s.context = %s OR s.context = %s)\r\n\t\t\t\t\t\t\t\t\t\t\tAND t.status = %d\r\n\t\t\t\t\t\t\t\t\t\t\tAND t.value <> ''", 'URL slug: ' . $slug, 'default', 'WordPress', ICL_TM_COMPLETE)); foreach ($slugs_translations as $translation) { $this->translated_slugs[$slug][$translation->language] = $translation->value; } // Add empty values for languages not found. foreach ($this->sitepress->get_active_languages() as $lang) { if (!isset($this->translated_slugs[$slug][$lang['code']])) { $this->translated_slugs[$slug][$lang['code']] = ''; } } } if ($this->translated_slugs[$slug][$language]) { $has_translation = true; $slug = $this->translated_slugs[$slug][$language]; } else { $has_translation = false; } if ($has_translation) { return $slug; } } else { $has_translation = true; } return $has_translation ? $slug : $this->st_fallback($slug, $language); }
/** * @param string $slug * @param string $post_type * @param string|bool $language * * @return string */ function get_translated_slug($slug, $post_type, $language = false) { if ($post_type) { $language = $language ? $language : $this->sitepress->get_current_language(); if (!isset($this->translated_slugs[$post_type][$language])) { $slug_original = $this->wpdb->get_row($this->wpdb->prepare("SELECT s.value, s.language\r\r\n\t\t\t\t\t\t\t\t\t\tFROM {$this->wpdb->prefix}icl_strings s\r\r\n\t\t\t\t\t\t\t\t\t\tWHERE s.name = %s\r\r\n\t\t\t\t\t\t\t\t\t\t AND (s.context = %s OR s.context = %s)", 'URL slug: ' . $post_type, 'default', 'WordPress')); if ((bool) $slug_original === true) { $this->translated_slugs[$post_type][$slug_original->language] = $slug_original->value; $slugs_translations = $this->wpdb->get_results($this->wpdb->prepare("SELECT t.value, t.language\r\r\n\t\t\t\t\t\t\t\t\t\tFROM {$this->wpdb->prefix}icl_strings s\r\r\n\t\t\t\t\t\t\t\t\t\tJOIN {$this->wpdb->prefix}icl_string_translations t ON t.string_id = s.id\r\r\n\t\t\t\t\t\t\t\t\t\tWHERE s.name = %s\r\r\n\t\t\t\t\t\t\t\t\t\t AND (s.context = %s OR s.context = %s)\r\r\n\t\t\t\t\t\t\t\t\t\t\tAND t.status = %d\r\r\n\t\t\t\t\t\t\t\t\t\t\tAND t.value <> ''", 'URL slug: ' . $post_type, 'default', 'WordPress', ICL_TM_COMPLETE)); foreach ($slugs_translations as $translation) { $this->translated_slugs[$post_type][$translation->language] = $translation->value; } foreach ($this->sitepress->get_active_languages() as $lang) { if (!isset($this->translated_slugs[$post_type][$lang['code']])) { $this->translated_slugs[$post_type][$lang['code']] = $slug; } } } } $slug = !empty($this->translated_slugs[$post_type][$language]) ? $this->translated_slugs[$post_type][$language] : $slug; } return $slug; }
/** * @param WPML_Post_Element $post_element * * @return false|string */ private function get_canonical_of_duplicate($post_element) { $source_element = $post_element->get_source_element(); if ($source_element) { $source_element_id = $source_element->get_id(); $source_language_code = $source_element->get_language_code(); $current_language = $this->sitepress->get_current_language(); $this->sitepress->switch_lang($source_language_code); $new_link = get_permalink($source_element_id); $this->sitepress->switch_lang($current_language); } else { $new_link = get_permalink($post_element->get_id()); } return $new_link; }
/** * @param integer $post_id * @param SitePress $sitepress * @return bool|mixed|null|string|void */ protected function get_save_post_lang($post_id, $sitepress) { $language_code = $this->get_element_lang_code($post_id); $language_code = $language_code ? $language_code : $sitepress->get_current_language(); $language_code = $sitepress->is_active_language($language_code) ? $language_code : $sitepress->get_default_language(); return apply_filters('wpml_save_post_lang', $language_code); }