как использовать две постоянные ссылки для одного настраиваемого типа сообщений на основе категорий

Я пытаюсь получить 2 разных константы для одного настраиваемого типа сообщений, основываясь на решении, которое дается там . Он работает для статей, но я не могу заставить его работать для моего типа «персонализированного типа» фильма.

Вот мой код, с моими 3 категориями (international; france; projections_dvd):

function wpd_query_var( $query_vars ) { $query_vars[] = 'is_international'; $query_vars[] = 'is_france'; $query_vars[] = 'is_projections_dvd'; return $query_vars; } add_filter('query_vars', 'wpd_query_var' , 10, 1 ); function wpd_post_rewrite(){ add_rewrite_rule( 'international/([^/]+)/?$', 'index.php?name=$matches[1]&is_international=1', 'top' ); add_rewrite_rule( 'france/([^/]+)/?$', 'index.php?name=$matches[1]&is_france=1', 'top' ); add_rewrite_rule( 'projections_dvd/([^/]+)/?$', 'index.php?name=$matches[1]&is_projections_dvd=1', 'top' ); } add_action( 'init', 'wpd_post_rewrite' ); function wpd_abstract_template( $single_template ){ global $wp_query; //print_r($wp_query); if ( isset( $wp_query->query_vars['is_international'] ) ) { if(in_category('international')) { return locate_template( 'film_international_template.php', false ) ; } else { return locate_template( '404.php', false ) ; } } if ( isset( $wp_query->query_vars['is_france'] ) ) { if(in_category('france')) { return locate_template( 'film_france_template.php', false ) ; } else { return locate_template( '404.php', false ) ; } } if ( isset( $wp_query->query_vars['is_projections_dvd'] ) ) { if(in_category('projections_dvd')) { return locate_template( 'film_projections_dvd_template.php', false ) ; } else { return locate_template( '404.php', false ) ; } } return locate_template( 'single.php', false ) ; } add_filter( 'single_template', 'wpd_abstract_template' ); 

Таким образом, моя статья «пример» отображается как на постоянных ссылках с помощью разных шаблонов: www.mysite.com/international/example www.mysite.com/france/example

Но мой пост «пример» персонализированного типа «фильм» (который имеет как «france», так и «международные» категории) по-прежнему имеет эту единственную постоянную ссылку по умолчанию: www.mysite.com/film/example Мне нужно, чтобы у этих 2 permalinks: www.mysite.com/international/film/example и www.mysite.com/france/film/example или, по крайней мере, www.mysite.com/international/example и www.mysite.com/france/example

Я искал решение, и я немного потерял, если у кого есть подсказка?

Если кому-то интересно, решение было довольно близко, мне нужно было указать правило перезаписи с & post_type = film:

 add_rewrite_rule( 'projections_dvd/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=film&is_projections_dvd=1', 'top' ); 

Я также изменил запрос vars, чтобы сделать его проще:

 function wpd_query_var( $query_vars ) { $query_vars[] = 'is_international'; $query_vars[] = 'is_france'; $query_vars[] = 'is_projections_dvd'; $query_vars[] = 'categorie'; return $query_vars; } add_filter('query_vars', 'wpd_query_var' , 10, 1 ); function wpd_post_rewrite(){ add_rewrite_rule( 'international/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=film&categorie=international', 'top' ); add_rewrite_rule( 'france/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=film&categorie=france', 'top' ); add_rewrite_rule( 'projections_dvd/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=film&categorie=projections_dvd', 'top' ); add_rewrite_rule( 'international/theatrical/([^/]+)/?$', 'index.php?name=$matches[1]&post_type=film&categorie=theatrical', 'top' ); } add_action( 'init', 'wpd_post_rewrite' ); function wpd_abstract_template( $single_template ){ global $wp_query; if ( isset( $wp_query->query_vars['categorie'] ) ) { $categorie = $wp_query->query_vars['categorie'] ; if($categorie == 'international' && in_category('international')) { return locate_template( 'film_international_template.php', false ) ; } elseif($categorie == 'theatrical' && in_category('theatrical')) { return locate_template( 'film_international_theatrical_template.php', false ) ; } elseif($categorie == 'france' && in_category('france')) { return locate_template( 'film_france_template.php', false ) ; } elseif($categorie == 'projections_dvd' && in_category('projections_dvd')) { return locate_template( 'film_projections_dvd_template.php', false ) ; } else { return locate_template( '404.php', false ) ; } } return locate_template( 'single.php', false ) ; } add_filter( 'single_template', 'wpd_abstract_template' );