Estou criando um tema com um tipo de postagem personalizado para os membros da equipe. Também tenho a seguinte estrutura de página:
about <-- this is a page
about/team-members <-- this is a page, lists all the team members
about/team-members/joe-bloggs <-- this is a custom post type (team member) entry
A terceira estrutura aqui usa as páginas about e membro da equipe, mas continua usando o slug de tipo de postagem personalizado para fazer parecer que os pais são membros da equipe e aproximadamente. Consegui isso definindo as seguintes opções no tipo de postagem personalizada:
...
'rewrite' => array( 'slug' => 'about/team-members', 'with_front' => false)
...
Isso funciona muito bem, no entanto, quando chego ao nível de postagem dos membros da equipe, não recebo mais as classes da página atual e dos ancestrais atuais nas páginas pai. Eu sei por que isso ocorre, porque não estamos tecnicamente em um pai pagina dessas páginas; no entanto, existe uma maneira de enganar / corrigir / ignorar para que as páginas apareçam como pais?
Eu consegui isso muito bem usando páginas para os membros da equipe; no entanto, um tipo de postagem personalizado foi escolhido para facilitar o uso do administrador.
Obrigado rapazes + raparigas!
fonte
register_post_type
documentação, você pode ajudar?Respostas:
Ao trabalhar com páginas, você pode selecionar uma página pai e esse valor é salvo como o número de identificação da página pai no
post_parent
campo da página filha no banco de dados.No seu caso, você está usando um tipo de postagem personalizado; portanto, você precisará criar sua própria metabox para a página pai; algo como:
Não tem nada a ver com isso
register_post_type
. Você está enganando o WordPress a pensar que é uma página filha de outro tipo de postagem (página).fonte
wp_list_pages
.wp_nav_menu
- o post_parent é sobre / team-members, mas a navegação destaca o item pai dos meus posts "normais" do blog ... alguma outra idéia de como eu poderia consertar isso?Fui com um andador personalizado para obter algo semelhante ... evita as necessidades de campos personalizados, mas todas as postagens de um tipo precisam ficar abaixo do mesmo ponto na árvore de páginas.
fonte
Isenção de responsabilidade: Depois de tentar, isso me parece um problema não existente, porque - pelo menos para mim - ele funciona na minha instalação do WP 3.9.2. Não foi possível encontrar um rastreador de erros de acordo.
Tenho juntos um pequeno plugin para testar isso, o que pode ajudar alguém. Mas, como eu disse no aviso acima, não consegui reproduzir o problema em uma instalação atual do wordpress. Separei o plugin em quatro arquivos, eles estão indo juntos em um diretório dentro do diretório do plugin.
plugin-cpt_menu_hierarchy.php :
include-register_post_type.php :
include-cpt_parent_meta_box.php :
include-menu_highlighting.php :
fonte
Uma solução possível é que, sempre que o tipo de postagem personalizado for salvo, você poderá definir seu pai como
about/team-members
programaticamente.Aqui estão os passos:
fonte
Eu mesmo tive mais tempo para investigar isso (desculpe se perdi o tempo de alguém), e imaginei que, para mim, a melhor maneira de resolver o problema realçado seria meio que refazer o que
_wp_menu_item_classes_by_context()
está fazendo, que é repetido por todos. pais e ancestrais do item de menu que atua como pai do meu tipo de postagem personalizado e adiciona classes adequadamente.Como também queria que a página pai do meu tipo de postagem personalizado fosse corrigida e facilmente alterável sem a necessidade de atualizar todas as postagens depois que o pai for alterado, decidi usar uma opção em vez de preencher o
post_parent
campo das minhas postagens personalizadas. Eu usei o ACF para isso, já que eu o uso no meu tema de qualquer maneira, mas o uso da funcionalidade padrão da opção WordPress também o faria.Para minhas necessidades, eu poderia fazer uso do
wp_nav_menu_objects
filtro. Além disso, eu tive que filtrar apage_for_posts
opção para que ela retornasse um valor falso / vazio, o que evita que a página de postagens padrão também seja destacada.Observe que eu não fui até o fim, o filtro apenas adiciona as classes
current-menu-ancestor
ecurrent-menu-parent
, pois isso foi suficiente para minhas necessidades!Por uma questão de integridade, ao preencher
post_parent
(consulte a resposta da @ Bainternet ) em vez de usar opções, a recuperação do ID pai pode ser algo como isto:fonte
http://codex.wordpress.org/Function_Reference/get_post_type_object http://codex.wordpress.org/Function_Reference/get_page_by_path
EDIT 1:
Como os ponteiros não funcionam:
fonte