Estrutura personalizada de permalink apenas para mensagens padrão

4

Alguém sabe como modificar a estrutura de URL apenas para a página de postagem única?

Quando vou para uma página de postagem, a URL deve ser: example.com/xxx/my-post. Todos os outros URLs (com exceção das páginas de postagem únicas) não devem conter "xxx" na URL.

Personalizar as configurações de permalink adicionaria xxx na frente de taxonomias e categorias, assim, para que não funcionassem para o que eu preciso.

Essencialmente, quero que todos os URLs "post" e "events" contenham um segmento "xxx" extra na estrutura.

    
por c10b10 04.01.2012 / 17:18

2 respostas

3

A solução é registrar novamente o tipo de postagem padrão logo após o Wordpress e adicionar um slug de reconfiguração. Além disso, o parâmetro _builtin precisa ser definido como falso.

add_action( 'init', 'my_new_default_post_type', 1 );
function my_new_default_post_type() {

    register_post_type( 'post', array(
        'labels' => array(
            'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
        ),
        'public'  => true,
        '_builtin' => false, 
        '_edit_link' => 'post.php?post=%d', 
        'capability_type' => 'post',
        'map_meta_cap' => true,
        'hierarchical' => false,
        'rewrite' => array( 'slug' => 'post' ),
        'query_var' => false,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    ) );
}
    
por c10b10 09.01.2012 / 17:47
2

Outro método sem os possíveis efeitos colaterais de registrar um novo tipo de postagem é modificar as regras de reconfiguração para remover o front-link do permalink.

function wpa37911_permastructs(){
    global $wp_rewrite;
    $wp_rewrite->extra_permastructs['category']['struct'] = '/category/%category%';
    $wp_rewrite->extra_permastructs['post_tag']['struct'] = '/tag/%post_tag%';
}
add_action( 'init', 'wpa37911_permastructs' );
    
por Milo 10.03.2013 / 06:29