Reescrita de URL do tipo de postagem personalizada?

29

Eu configurei um tipo de postagem personalizado para meus projetos de portfólio. O URL principal para isso está localizado em / projects /

Agora eu também configuro as postagens do meu blog permalink para / articles / * / para a estrutura do permalink. Isso significa que quando eu vou ver um projeto de portfólio, a URL muda para / articles / projects / project-name /

Sei que deve haver uma maneira de reescrever permalinks SOMENTE para o tipo de postagem personalizado de meus projetos. Mas eu não estou familiarizado com a sintaxe em declarar o slug de URL - apreciaria qualquer ajuda que eu conseguisse!

    
por Jake 25.05.2012 / 17:47
fonte

2 respostas

34

Quando você registra o tipo de postagem personalizado, é necessário especificar que a regra de regravação não deve ser anexada à estrutura de URL existente.

Em suma, isso significa que esta linha na sua chamada register_post_type :

'rewrite' => array('slug' => 'projects'),

deve se transformar nisso:

'rewrite' => array('slug' => 'projects','with_front' => false),

Para mais informações, confira o argumento rewrite da entrada do códice em register_post_type

edit: apenas certifique-se de que, após atualizar o código, você libera as regras de reconfiguração visitando Configurações > Permalinks. Caso contrário, você ainda verá os links antigos.

    
por 0x61696f 25.05.2012 / 18:29
fonte
12

Eu tive esse problema literalmente 3 dias atrás, então me deparei com uma série no wp.tutsplus.com . Eu troquei meu próprio código para acomodar melhor sua pergunta, mas foi assim que acabei depois da série. Além disso, tenha em mente que isso não foi testado.

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

Teoricamente, você pode trocar o que quiser na URL armazenada na variável $projects_structure , o que está lá é o que acabei usando.

Boa sorte, e como sempre - não deixe de nos contar como funcionou! :)

    
por cmegown 25.05.2012 / 18:18
fonte