Background of the issue:
I am trying to get /post/ between locale and post name in URL. Here is a code:
function custom_post_permalink_structure($permalink, $post, $leavename) {
if ($post->post_type == 'post') {
$permalink = home_url('/post/' . $post->post_name);
}
return $permalink;
}
add_filter('post_link', 'custom_post_permalink_structure', 10, 3);
add_filter('post_type_link', 'custom_post_permalink_structure', 10, 3);
function custom_post_rewrite_rule() {
add_rewrite_rule('^post/([^/]+)/?', 'index.php?post_type=post&name=$matches[1]', 'top');
}
add_action('init', 'custom_post_rewrite_rule');
Link to a page where the issue can be seen: hidden link
Symptoms:
After adding translation to the post, WPML switcher is broken for this post.
Questions:
How can I ensure the correct URLs with /post/ and correct lang slug in the language switcher?
What is the correct solution compatible with WPML for this issue?