Postar tipo Permalink

Eu crio um tipo de postagem personalizado:

$rewrite = array( 'slug' => '%categories%', 'with_front' => false, 'pages' => true, 'feeds' => true, ); $args = array( // ...Other options 'taxonomies' => array( 'categories' ), 'hierarchical' => false, 'public' => true, 'has_archive' => 'applications', 'publicly_queryable' => true, 'rewrite' => $rewrite, // Other options... ); register_post_type( 'applications', $args ); 

E a taxonomia:

 $args = array( // ...Other options 'hierarchical' => true, 'public' => true, // Other options... ); register_taxonomy( 'categories', array( 'applications' ), $args ); 

e esta function para adicionar taxação hierárquica slug para post url:

 function remove_cpt_slug( $post_link, $post ) { if ( 'applications' != $post->post_type || 'publish' != $post->post_status || strpos($post_link, '%categories%') === FALSE) { return $post_link; } $terms = wp_get_object_terms( get_the_ID(), 'categories', array( 'fields' => 'slugs' ) ); if ( !is_wp_error($terms) && !empty($terms) ){ $taxurl = implode('/', $terms ); } else { return str_replace( '%categories%/', '', $post_link ); } return str_replace( '%categories%', $taxurl , $post_link ); } add_filter( 'post_type_link', 'remove_cpt_slug', 10, 2 ); add_filter( 'post_link', 'remove_cpt_slug', 10, 2 ); 

Agora, gerou permalink para posts como eu esperava. Mas redirecionam para % postname% estrutura e obtêm 404 Erro não encontrado.

 domain.com/game/puzzle/desert-storm/ will redirect to domain.com/desert-storm/ 

(Depois de qualquer alteração, eu salve as configurações de permalink – reescreva a descarga)

Como evitar esse redirecionamento? e resolva o 404?

Solutions Collecting From Web of "Postar tipo Permalink"

O slug de um CPT não pode ser dynamic (na verdade nenhum slug pode ser), pois wordpress precisa saber como analisar a URL muito cedo no tratamento da solicitação. Você provavelmente pode mudar o comportamento, mas você acabará com os mesmos resultados que os slugs devem ser constantes mesmo quando você implementa sua própria análise.

É por isso que o seu remove_cpt_slug gera o URL que você espera, mas o wordpress falha em lidar com isso corretamente.