get_top_level_item(); if ( empty( $current_item ) ) { return ''; } $out = ''; foreach ( $this->get_elements() as $element ) { $out .= $element->get(); } if ( empty( $out ) || ! $this->settings->show_wrapper ) { return $out; } Assets::enqueue_frontend_scripts(); $cr = $this->settings->preserve_spacing ? "\n" : ''; $out = sprintf( "{$cr}
{$cr}%s{$cr}%s{$cr}{$cr}
", $current_item, $this->get_button(), $out ); $out = sprintf( '<%1$s id="%2$s" class="%3$s" aria-label="%4$s">%5$s', $this->get_nav_tag(), esc_attr( $this->settings->unique_id ), esc_attr( implode( ' ', $this->get_wrapper_classes() ) ), /* translators: accessibility text */ esc_attr__( 'Choose a language', 'polylang' ), $out ); return "{$cr}{$out}{$cr}"; } /** * Returns an instance of `Element\Nav`. * * @since 3.9 * * @param PLL_Language $language Instance of `PLL_Language`. * @return Element */ protected function get_element( PLL_Language $language ): Element { return new Element( $language, $this->settings, $this->links ); } /** * Returns the markup of the current item. * * @since 3.9 * * @return string */ private function get_top_level_item(): string { if ( ! empty( $this->links->curlang ) ) { $curlang = $this->links->curlang; } else { $curlang = $this->links->model->languages->get( $this->links->options['default_lang'] ); } if ( empty( $curlang ) ) { return ''; } return $this->get_element( $curlang )->get_link(); } /** * Returns the markup of the button. * * @since 3.9 * * @return string */ private function get_button(): string { $svg = ''; return sprintf( '', /* translators: accessibility text */ esc_attr__( 'Open/Close languages submenu', 'polylang' ), $svg ); } }