/** * @param null|WP_Post $post */ public function render_languages($post = null) { if (!$post || !is_post_type_translated($post->post_type)) { return; } $this->set_post($post); $this->init_post_data(); $this->post_edit_languages_duplicate_of(); ob_start(); $this->post_edit_languages_dropdown(); $this->connect_translations(); $this->translation_of(); $this->languages_actions(); $this->copy_from_original($post); do_action('icl_post_languages_options_after'); $contents = ob_get_clean(); echo $this->is_a_duplicate() ? '<span style="display:none">' . $contents . '</span>' : $contents; }
function save_variation_descriptions_translations($post_id, $data, $job) { $language = $job->language_code; foreach ($data as $data_key => $value) { if ($value['finished'] && strpos($value['field_type'], 'wc_variation_description:') === 0) { $variation_id = substr($value['field_type'], strpos($value['field_type'], ':') + 1); if (is_post_type_translated('product_variation')) { $translated_variation_id = apply_filters('translate_object_id', $variation_id, 'product_variation', false, $language); } else { global $sitepress; $trid = $sitepress->get_element_trid($variation_id, 'post_product_variation'); $translations = $sitepress->get_element_translations($trid, 'post_product_variation', true, true, true); $translated_variation_id = isset($translations[$language]) ? $translations[$language]->element_id : false; } if ($translated_variation_id) { update_post_meta($translated_variation_id, '_variation_description', $value['data']); } } } }
/** * @param int $element_id * @param string $element_type * @param bool|false $return_original_if_missing * @param null $language_code * * @return int|null */ function get_object_id($element_id, $element_type = 'post', $return_original_if_missing = false, $language_code = null) { global $wp_post_types, $wp_taxonomies; $ret_element_id = null; if ($element_id) { $language_code = $language_code ? $language_code : $this->get_current_language(); if ($element_type == 'any') { $post_type = get_post_type($element_id); if ($post_type) { $element_type = $post_type; } else { $element_type = null; } } if ($element_type) { if (isset($wp_taxonomies[$element_type])) { /** @var WPML_Term_Translation $wpml_term_translations */ global $wpml_term_translations; $ret_element_id = is_taxonomy_translated($element_type) ? $wpml_term_translations->term_id_in($element_id, $language_code) : $element_id; } elseif (isset($wp_post_types[$element_type])) { /** @var WPML_Post_Translation $wpml_post_translations */ global $wpml_post_translations; $ret_element_id = is_post_type_translated($element_type) ? $wpml_post_translations->element_id_in($element_id, $language_code) : $element_id; } else { $ret_element_id = null; } $ret_element_id = $ret_element_id ? (int) $ret_element_id : ($return_original_if_missing && !$ret_element_id ? $element_id : null); } } return $ret_element_id; }