ti-enxame.com

Reescrita de URL do tipo de postagem personalizada?

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

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

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

30
Jake

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

Em suma, isso significa que esta linha em seu register_post_type chama:

'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 codex em register_post_type

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

37
0x61696f

Eu tive esse problema literalmente 3 dias atrás, então eu tropecei em 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, 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ê 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! :)

14
cmegown