Existem muitas situações em que um tema ou plug-in registra um tipo de postagem e você deseja modificá-lo. Há, claro, add_post_type_support()
e remove_post_type_support()
, mas aqueles não dão acesso à lista completa de argumentos que register_post_type()
toma. Em particular, talvez eu queira desativar um arquivo de tipo de postagem, ocultar a interface do usuário do administrador, ocultar da pesquisa, etc., deixando o restante das configurações de tipo de postagem em paz.
A página do Codex pararegister_post_type()
dangles isso na minha frente:
Descrição
Crie ou modifique um tipo de postagem.
Mas, no passado, quando tento fazer isso, isso não parecia funcionar. Essa função é realmente para modificar os tipos de postagem? Em caso afirmativo, você pode simplesmente redefinir alguns argumentos e deixar o resto em paz?
Vendo que não há sequer uma deregister_post_type()
função , não entendo como isso pode ser feito.
fonte
register_post_type
estaria correto? Eu assumo isso pelo seu "Sim". E ele não descarta nenhum erro e tem o efeito desejado. O caso real é a segunda opção I presente nesta resposta: wordpress.stackexchange.com/a/74331/12615register_post_type
. Na realidade, não há necessidade. Foi uma pergunta "para os registros", obrigado pelo feedback.Após algumas pesquisas, descobri que nenhuma dessas respostas está atualizada.
Em 8 de dezembro de 2015, o WordPress inclui um novo filtro
register_post_type_args
, que permite conectar-se aos argumentos de um tipo de postagem registrado.fonte
init
register_post_type
funções. O único cenário em que meu código não funcionará é se o tipo de postagem não estiver sendo registrado corretamente. Todos os tipos de postagem devem ser registrados durante o gancho init. No codex: "register_post_type não funcionará se for chamado antes de 'init', e os aspectos do tipo de postagem recém-criado ou modificado funcionarão incorretamente se for chamado mais tarde." Se você ainda precisar de ajuda, sugiro postar mais detalhes em uma nova pergunta.Aqui está um exemplo de como usar o
'registered_post_type'
filtro para modificar um tipo de postagem em outro plug-in.Um plug-in que eu estava usando não incluía um menu_icon em sua definição, então eu queria adicionar um dos meus.
fonte
Conecte-se
'registered_post_type'
depois que o outro código o registrar. É chamado no final deregister_post_type()
. Você recebe dois argumentos:$post_type
e$args
.Agora você pode alterar qualquer coisa para este tipo de postagem. Inspecione
$GLOBALS['wp_post_types']
algumas opções.fonte
register_post_type()
que inclui "modificar?" Isso está errado? Devo pular no meu cavalo da Internet e derrotá-lo do Codex neste momento?$wp_post_types[$post_type] = $args;
… Sugere que você possa alterar as propriedades. Adicione um exemplo do código com falha à sua pergunta.Enfrentei a mesma coisa com o plug-in The Events Calendar .
Adicionei o código abaixo ao function.php para modificar o tipo de postagem tribe_organizer
fonte
Não sei se isso é feio, mas você pode alterar o
GLOBAL
espaço reservado "on the fly" sempre que precisar manipular um único argumento. É assim que usamos um tipo de postagem não públicacontents
para ser aceitável no menu do administrador. Fechamos antes e depois após o menu renderizar:No nosso caso, queremos que o plugin Admin Menu Post List aceite nosso tipo de post, pois eles chamam
return get_post_types(array('public' => true));
dentro do seu gancho com a prioridade 11 ...Desenvolvedores -Por favor, comente se isso pode causar problemas.
fonte