PluginProbe
Polylang / 2.6.2
Polylang v2.6.2
3.8.9 3.8.8 3.8.7 3.8.6 3.8.5 3.8.4 3.8.3 2.7 2.7.0.1 2.7.1 2.7.2 2.7.3 2.7.4 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.9 2.9.1 2.9.2 3.0 3.0.1 3.0.2 3.0.3 All 233 releases
← All changes | include/switcher.php +10 -11 2.7.22.6.2 View file →
@@ -41,10 +41,10 @@
41 41 * @param array $args
42 42 * @return array
43 43 */
44 44 protected function get_elements( $links, $args ) {
45 +
45 46 $first = true;
46 - $out = array();
47 47
48 48 foreach ( $links->model->get_languages_list( array( 'hide_empty' => $args['hide_if_empty'] ) ) as $language ) {
49 49 $id = (int) $language->term_id;
50 50 $order = (int) $language->term_group;
@@ -52,12 +52,18 @@
52 52 $locale = $language->get_locale( 'display' );
53 53 $classes = array( 'lang-item', 'lang-item-' . $id, 'lang-item-' . esc_attr( $slug ) );
54 54 $url = null; // Avoids potential notice
55 55
56 + if ( $first ) {
57 + $classes[] = 'lang-item-first';
58 + $first = false;
59 + }
60 +
56 61 if ( $current_lang = $links->curlang->slug == $slug ) {
57 62 if ( $args['hide_current'] && ! ( $args['dropdown'] && ! $args['raw'] ) ) {
58 63 continue; // Hide current language except for dropdown
59 - } else {
64 + }
65 + else {
60 66 $classes[] = 'current-lang';
61 67 }
62 68 }
63 69
@@ -91,17 +97,12 @@
91 97
92 98 $name = $args['show_names'] || ! $args['show_flags'] || $args['raw'] ? ( 'slug' == $args['display_names_as'] ? $slug : $language->name ) : '';
93 99 $flag = $args['raw'] && ! $args['show_flags'] ? $language->flag_url : ( $args['show_flags'] ? $language->flag : '' );
94 100
95 - if ( $first ) {
96 - $classes[] = 'lang-item-first';
97 - $first = false;
98 - }
99 -
100 101 $out[ $slug ] = compact( 'id', 'order', 'slug', 'locale', 'name', 'url', 'flag', 'current_lang', 'no_translation', 'classes' );
101 102 }
102 103
103 - return $out;
104 + return empty( $out ) ? array() : $out;
104 105 }
105 106
106 107 /**
107 108 * Displays a language switcher
@@ -182,14 +183,12 @@
182 183 *
183 184 * @param string $html html returned/outputted by the template tag
184 185 * @param array $args arguments passed to the template tag
185 186 */
186 - $out = apply_filters( 'pll_the_languages', $walker->walk( $elements, -1, $args ), $args );
187 + $out = apply_filters( 'pll_the_languages', $walker->walk( $elements, $args ), $args );
187 188
188 189 // Javascript to switch the language when using a dropdown list
189 190 if ( $args['dropdown'] ) {
190 - $urls = array();
191 -
192 191 foreach ( $links->model->get_languages_list() as $language ) {
193 192 $url = $links->get_translation_url( $language );
194 193 $urls[ $language->slug ] = $args['force_home'] || empty( $url ) ? $links->get_home_url( $language ) : $url;
195 194 }