wpml-taxonomy-element-language-dropdown.class.php
2.33 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
<?php
class WPML_Taxonomy_Element_Language_Dropdown {
function add_language_selector_to_page( $active_languages, $selected_language, $translations, $element_id, $type ) {
?>
<div id="icl_tax_menu" style="display:none">
<div id="dashboard-widgets" class="metabox-holder">
<div class="postbox-container" style="width: 99%;line-height:normal;">
<div id="icl_<?php echo esc_attr( $type ); ?>_lang" class="postbox" style="line-height:normal;">
<h3 class="hndle">
<span><?php echo esc_html__( 'Language', 'sitepress' ); ?></span>
</h3>
<div class="inside" style="padding: 10px;">
<?php
$active_languages = $this->filter_allowed_languages( $active_languages, $selected_language );
$disabled = count( $active_languages ) === 1 ? ' disabled="disabled" ' : '';
?>
<select name="icl_<?php echo esc_attr( $type ); ?>_language" <?php echo $disabled; ?>>
<?php
echo $this->add_options( $active_languages, $selected_language );
?>
<?php foreach ( $active_languages as $lang ) : ?>
<?php
if ( $lang['code'] === $selected_language || ( isset( $translations[ $lang['code'] ]->element_id ) && $translations[ $lang['code'] ]->element_id != $element_id ) ) {
continue;
}
?>
<option
value="<?php echo esc_attr( $lang['code'] ); ?>"
<?php
if ( $selected_language === $lang['code'] ) :
?>
selected="selected"<?php endif; ?>><?php echo esc_html( $lang['display_name'] ); ?></option>
<?php endforeach; ?>
</select>
<?php if ( $disabled ) { ?>
<input type="hidden" name="icl_<?php echo esc_attr( $type ); ?>_language"
value="<?php echo esc_attr( $selected_language ); ?>"/>
<?php
}
}
private function filter_allowed_languages( $active_languages, $selected_language ) {
global $sitepress;
$wp_api = new WPML_WP_API();
$show_all = $wp_api->is_term_edit_page() || $sitepress->get_current_language() === 'all';
return $show_all ? $active_languages : array( $active_languages[ $selected_language ] );
}
private function add_options( $active_languages, $selected_language ) {
$html = '';
foreach ( $active_languages as $lang ) {
if ( $lang['code'] === $selected_language ) {
$html .= '<option value="' . esc_attr( $selected_language ) . '" selected="selected">' . esc_html( $lang['display_name'] ) . '</option>';
}
}
return $html;
}
}