taxonomy-menu.php
3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/**
* @var SitePress $sitepress
* @var wpdb $wpdb
*/
global $sitepress, $wpdb;
$sitepress->noscript_notice();
$element_id = isset( $term->term_taxonomy_id ) ? $term->term_taxonomy_id : false;
$element_type = isset( $_GET['taxonomy'] ) ? esc_sql( $_GET['taxonomy'] ) : 'post_tag';
$icl_element_type = 'tax_' . $element_type;
$default_language = $sitepress->get_default_language();
$current_language = $sitepress->get_current_language();
if ( $element_id ) {
$res_prepared = $wpdb->prepare(
"SELECT trid, language_code, source_language_code
FROM {$wpdb->prefix}icl_translations WHERE element_id=%d AND element_type=%s",
array( $element_id, $icl_element_type )
);
/** @var \stdClass $res */
$res = $wpdb->get_row( $res_prepared );
$trid = $res->trid;
if ( $trid ) {
$element_lang_code = $res->language_code;
} else {
$element_lang_code = $current_language;
$translation_id = $sitepress->set_element_language_details( $element_id, $icl_element_type, null, $element_lang_code );
// get trid of $translation_id
$trid = $wpdb->get_var( $wpdb->prepare( "SELECT trid FROM {$wpdb->prefix}icl_translations WHERE translation_id=%d", array( $translation_id ) ) );
}
} else {
$trid = isset( $_GET['trid'] ) ? (int) $_GET['trid'] : false;
$element_lang_code = $current_language;
if ( array_key_exists( 'lang', $_GET ) ) {
$element_lang_code = filter_var( $_GET['lang'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
}
}
$translations = false;
if ( $trid ) {
$translations = $sitepress->get_element_translations( $trid, $icl_element_type );
}
$terms_translations = empty( $translations ) ? array() : $translations;
$active_languages = $sitepress->get_active_languages();
$selected_language = $element_lang_code ? $element_lang_code : $default_language;
$source_language = isset( $_GET['source_lang'] ) ? strip_tags( filter_input( INPUT_GET, 'source_lang', FILTER_SANITIZE_FULL_SPECIAL_CHARS ) ) : false;
$untranslated_ids = $sitepress->get_elements_without_translations( $icl_element_type, $selected_language, $default_language );
$dropdown = new WPML_Taxonomy_Element_Language_Dropdown();
$dropdown->add_language_selector_to_page(
$active_languages,
$selected_language,
$terms_translations,
$element_id,
$icl_element_type
);
$setup_complete = $sitepress->get_setting( 'setup_complete' );
if ( $setup_complete ) {
require WPML_PLUGIN_PATH . '/menu/wpml-translation-selector.class.php';
$selector = new WPML_Translation_Selector( $sitepress, $default_language, $source_language, $element_id );
$selector->add_translation_of_selector_to_page(
$trid,
$sitepress->get_current_language(),
$selected_language,
$untranslated_ids
);
$sitepress->add_translate_options( $trid, $active_languages, $selected_language, $terms_translations, $icl_element_type );
echo '</div></div></div></div></div>';
if ( $trid && $sitepress->get_wp_api()->is_term_edit_page() ) {
/**
* Extends the translation options for terms
*
* Called after rendering the translation options for terms, after the closing the main container tag
*
* @since 3.8.2
*
* @param array $args {
* Information about the current term and its translations
*
* @type int $trid The translation cluster ID.
* @type array $active_languages All active languages data.
* @type string $selected_language The language of the current term being edited.
* @type array $translations All the available translations (including the current one).
* @type string $type The translation element type (e.g. `tax_category`, `tax_{taxonomy}`.
* }
*/
do_action(
'wpml_translate_options_terms_after',
array(
'trid' => $trid,
'active_languages' => $active_languages,
'selected_language' => $selected_language,
'translations' => $terms_translations,
'type' => $icl_element_type,
)
);
}
}