Sei que as pessoas perguntaram isso antes e foram até adicionar o tipo de postagem personalizada e reescrever o link permanente.
O problema é que tenho 340 categorias existentes que gostaria de continuar usando. Eu costumava ver / categoria / subcategoria / nome do post
Agora eu tenho o slug de customposttype / postname. A seleção da categoria não aparece mais no link permanente ... Eu não alterei a configuração do link permanente no admin para algo diferente.
Há algo que estou faltando ou preciso adicionar a este código?
function jcj_club_post_types() {
register_post_type( 'jcj_club', array(
'labels' => array(
'name' => __( 'Jazz Clubs' ),
'singular_name' => __( 'Jazz Club' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Add New Jazz Club' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Jazz Clubs' ),
'new_item' => __( 'New Jazz Club' ),
'view' => __( 'View Jazz Club' ),
'view_item' => __( 'View Jazz Club' ),
'search_items' => __( 'Search Jazz Clubs' ),
'not_found' => __( 'No jazz clubs found' ),
'not_found_in_trash' => __( 'No jazz clubs found in Trash' ),
'parent' => __( 'Parent Jazz Club' ),
),
'public' => true,
'show_ui' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 5,
'query_var' => true,
'supports' => array(
'title',
'editor',
'comments',
'revisions',
'trackbacks',
'author',
'excerpt',
'thumbnail',
'custom-fields',
),
'rewrite' => array( 'slug' => 'jazz-clubs-in', 'with_front' => true ),
'taxonomies' => array( 'category','post_tag'),
'can_export' => true,
)
);
custom-post-types
categories
permalinks
jogo da velha
fonte
fonte
Respostas:
Existem dois pontos de ataque a serem abordados quando você adiciona regras personalizadas de reescrita de tipo de postagem:
Regras de reescrita
Isso acontece quando as regras de reescrita estão sendo geradas
wp-includes/rewrite.php
emWP_Rewrite::rewrite_rules()
. O WordPress permite filtrar as regras de reescrita para elementos específicos, como postagens, páginas e vários tipos de arquivo. Onde você vêposttype_rewrite_rules
aposttype
peça deve ser o nome do seu tipo de postagem personalizado. Como alternativa, você pode usar opost_rewrite_rules
filtro, desde que não oblitere as regras de postagem padrão também.Em seguida, precisamos da função para realmente gerar as regras de reescrita:
A principal coisa a observar aqui se você decidir brincar é o booleano 'Diretórios de passeio'. Ele gera regras de reescrita para cada segmento de uma estrutura permanente e pode causar incompatibilidades de regras de reescrita. Quando uma URL do WordPress é solicitada, a matriz de regras de reescrita é verificada de cima para baixo. Assim que uma correspondência for encontrada, ela carregará o que encontrou, por exemplo, se sua permastruct tiver uma correspondência gananciosa, por exemplo. pois os
/%category%/%postname%/
diretórios for e walk estão ativados, ele produzirá regras de reescrita para os dois/%category%/%postname%/
AND/%category%/
que corresponderão a qualquer coisa. Se isso acontecer muito cedo, você está ferrado.Permalinks
Essa é a função que analisa o permalinks do tipo de postagem e converte uma permastruct (por exemplo, '/% year% /% monthnum% /% postname% /') em um URL real.
A próxima parte é um exemplo simples do que seria idealmente uma versão da
get_permalink()
função encontrada emwp-includes/link-template.php
. Permalinks de postagem personalizados são gerados pelosget_post_permalink()
quais é uma versão muito diluída doget_permalink()
.get_post_permalink()
é filtrada porpost_type_link
isso, estamos usando isso para criar uma estrutura permanente personalizada.Como mencionado, esse é um caso muito simplificado para gerar um conjunto de regras de reescrita personalizado e links permanentes, e não é particularmente flexível, mas deve ser suficiente para você começar.
Traindo
Eu escrevi um plug-in que permite definir permastructs para qualquer tipo de postagem personalizado, mas, como você pode usar
%category%
na estrutura de permalink para postagens, meu plug-in também suporta%custom_taxonomy_name%
todas as taxonomias personalizadas que você possui, ondecustom_taxonomy_name
está o nome da sua taxonomia, por exemplo.%club%
.Funcionará como esperado com taxonomias hierárquicas / não hierárquicas.
http://wordpress.org/extend/plugins/wp-permastructure/
fonte
$permalink = home_url(...
é substituído$permalink = user_trailingslashit(...
e nunca usado. Ou eu estou esquecendo de alguma coisa?$post_link
nem está definido. Deveria ser$permalink = user_trailingslashit( $permalink, 'single' );
?$permalink
não$post_link
. Cheers :)Tem a solução!
Para ter permalinks hierárquicos para o tipo de postagem personalizado, instale o plug-in Permalinks de tipo de postagem personalizada ( https://wordpress.org/plugins/custom-post-type-permalinks/ ).
Atualize o tipo de postagem registrada. Tenho o nome do tipo de postagem como centro de ajuda
E aqui está taxonomia registrada
Esta linha faz seu permalink funcionar
você pode remover
%post_id%
e pode manter/%help_centre_category%/%postname%/"
Não se esqueça de liberar permalinks do painel.
fonte
Eu encontrei uma solução!!!
(Depois de uma pesquisa interminável ... posso ter permalinks personalizados de POST TYPE como:
example.com/category/sub_category/my-post-name
aqui o código (em functions.php ou plugin):
fonte
Você tem vários erros no seu código. Limpei seu código existente:
Substitua seu código pelo código acima e veja se funciona. Responda de volta se tiver mais perguntas e tentarei ajudar.
EDITAR:
Notei que deixei de fora
'has_archive' => true
.fonte