| @@ -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 | } |