slash_helper = $slash_helper; } /** * Adjusts the CPT archive slug for possible slug translations from ST. * * @param string $link * @param string $post_type * @param null|string $language_code * * @return string */ public function adjust_cpt_slug_in_url( $link, $post_type, $language_code = null ) { $post_type_object = get_post_type_object( $post_type ); if ( isset( $post_type_object->rewrite ) ) { $slug = trim( $post_type_object->rewrite['slug'], '/' ); } else { $slug = $post_type_object->name; } $translated_slug = apply_filters( 'wpml_get_translated_slug', $slug, $post_type, $language_code ); if ( is_string( $translated_slug ) ) { $link_parts = explode( '?', $link, 2 ); $pattern = '#\/' . preg_quote( $slug, '#' ) . '\/#'; $link_new = trailingslashit( preg_replace( $pattern, '/' . $translated_slug . '/', trailingslashit( $link_parts[0] ), 1 ) ); $link = $this->slash_helper->match_trailing_slash_to_reference( $link_new, $link_parts[0] ); $link = isset( $link_parts[1] ) ? $link . '?' . $link_parts[1] : $link; } return $link; } }