3 class WPML_URL_Converter_Parameter_Strategy extends WPML_URL_Converter_Abstract_Strategy {
5 public function get_lang_from_url_string( $url ) {
6 return $this->lang_param->lang_by_param( $url, false );
9 public function convert_url_string( $source_url, $lang_code ) {
10 if ( $this->skip_convert_url_string( $source_url, $lang_code ) ) {
14 if ( ! $lang_code || $lang_code === $this->default_language ) {
18 $url_parts = wpml_parse_url( $source_url );
19 if ( ! is_array( $url_parts ) ) {
22 $query_args = $this->get_query_args( $url_parts );
25 $query_args['lang'] = $lang_code;
27 unset( $query_args['lang'] );
30 $url_parts['query'] = http_build_query( $query_args );
31 $converted_url = http_build_url( $url_parts );
33 return $this->slash_helper->maybe_user_trailingslashit( $converted_url );
36 public function convert_admin_url_string( $source_url, $lang ) {
37 return $this->convert_url_string( $source_url, $lang );
41 * @param array $url_parts
45 private function get_query_args( array $url_parts ) {
46 $query = isset( $url_parts['query'] ) ? $url_parts['query'] : '';
47 $query = str_replace( '?', '&', $query );
48 parse_str( $query, $query_args );
54 * @param string $language
58 public function get_home_url_relative( $url, $language ) {
59 if ( $language === $this->default_language ) {
64 return add_query_arg( 'lang', $language, $url );
71 * @param string $source_url
75 public function fix_trailingslashit( $source_url ) {
76 $query = wpml_parse_url( $source_url, PHP_URL_QUERY );
77 if ( ! empty( $query ) ) {
78 $source_url = str_replace( '?' . $query, '', $source_url );
81 $source_url = $this->slash_helper->maybe_user_trailingslashit( $source_url );
83 if ( ! empty( $query ) ) {
84 $source_url .= '?' . untrailingslashit( $query );
90 public function use_wp_login_url_converter() {