'WordPress and WPML : rewrite slug + language = 404
I use WPML with WordPress. I created 3 custom post types for a project with students.
I would like for each student's page to add their names in the slug like that :
http://www.example.com/custom-post-type/firstname-lastname/post-title
To do this I added a tag %student% in the slug to add lastname and nickname of the student.
http://www.example.com/custom-post-type/%student%/post-title
Example of output :
http://www.example.com/free-topic/john-doe/the-age-of-participatory-culture
In the main language of my website all works well. But in other language I got 404 errors (in English with /en/ for example)
http://www.example.com/en/free-topic/john-doe/the-age-of-participatory-culture
To register my post types (example of one on my 3 custom post types) :
register_post_type( 'free-topic', array(
    'label'               => __( 'Sujets imposés', 'ctt' ),
    'description'         => __( 'Tous les sujets imposés', 'ctt' ),
    'public'            => true,
    'show_ui'           => true,
    'show_in_rest'      => true,
    'menu_position'     => 28,
    'menu_icon'         => 'dashicons-format-aside',
    'capability_type'   => 'post',
    'has_archive'       => false,
    'supports'          => array( 'thumbnail', 'editor', 'title', 'custom-fields' ),
    'with_front'        => false,
    'rewrite'           => array( 'slug' => 'sujet-libre/%student%' ),
));
In functions.php :
$post_types_name = array('free-topic', 'dissertation', 'curriculum-vitae');
function ccn_author_in_permalink($post_link, $post) {
    global $post_types_name;
    foreach ($post_types_name as $post_type_name) {
        $authordata = get_userdata($post->post_author);
        $author_name = $authordata->display_name;
        $author_name_final = sanitize_title($author_name);
        $post_link = str_replace('%student%', $author_name_final, $post_link);
        return $post_link;
    }
}
add_filter('post_type_link', 'ccn_author_in_permalink', 1, 2);
function ccn_rewrite_url() {
    add_rewrite_tag( '%student%','([^&]+)' );
}
add_action( 'init', 'ccn_rewrite_url' );
What did I forget to avoid 404 errors?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|
