Regravação de URL de tipo de postagem personalizada?

32

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

Agora também configurei os posts do meu blog /articles/*/para a estrutura de links permanentes. Isso significa que, quando vou exibir um projeto de portfólio, a URL muda para/articles/projects/project-name/

Sei que deve haver uma maneira de reescrever permalinks apenas para o tipo de postagem personalizada dos meus projetos. Mas não estou familiarizado com a sintaxe ao declarar a lesma do URL - agradeceria qualquer ajuda que eu possa obter!

Jake
fonte

Respostas:

42

Ao registrar o tipo de postagem personalizado, você deve especificar que a regra de reescrita não deve ser anexada à estrutura de URL existente.

Em resumo, isso significa que esta linha na sua register_post_typechamada:

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

deve se transformar nisso:

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

Para obter mais informações, consulte o rewriteargumento na entrada do codex emregister_post_type

editar: verifique se, após atualizar o código, você libera as regras de reescrita visitando Configurações> Links permanentes. Caso contrário, você ainda verá os links antigos.

0x61696f
fonte
brilhante obrigado! Só para esclarecer, tudo o que preciso fazer para regras de liberação é acessar a página Configurações-> Permalinks e clicar em "Salvar alterações", correto?
Jake
4
Você nem precisa salvar as alterações. É o suficiente apenas para abrir a página os Permalinks configurações (isto é, se o seu arquivo .htaccess é gravável Se não, pressione Salvar alterações e copiar manualmente o código que retorna em sua .htaccess.)
0x61696f
2
Isso não parece funcionar para mim. As postagens dos meus projetos ainda estão indo example.com/projects/title-of-post. Também visitei a página Permalinks. O que poderia estar causando isso? Não existem regras de reescrita no meu htaccess.
Desi
Uau, obrigado, essa foi a parte que faltava! Visitar a página dos links permanentes não funcionou, mas apenas SALVAR as configurações atuais do
link
Continuei mudando as coisas sem liberar as regras de reescrita. Obrigado pela dica!
Tan-007
15

Eu tive esse problema há literalmente três dias atrás, depois me deparei com uma série no wp.tutsplus.com . Troquei meu próprio código para acomodar melhor sua pergunta, mas foi com isso que acabei depois de seguir a série. Além disso, lembre-se de 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ê poderia trocar o que quiser na URL armazenada na $projects_structurevariável, o que existe é exatamente o que acabei usando.

Boa sorte e, como sempre - volte e informe-nos como funcionou! :)

cmegown
fonte
1
As respostas que são compostas apenas por links geralmente são consideradas inúteis, pois esses recursos podem (e provavelmente irão) deixar de existir no futuro. Resuma o conteúdo.
Chrisguitarguy
Justo, vou trabalhar em uma revisão adequada.
Cmegown # 25/12
11
Agora, minha resposta contém código semelhante ao código de trabalho que eu tenho em um ambiente de produção que reescreve com êxito um URL de tipo de postagem personalizado. Espero que seja mais útil!
Cmegown # 25/12