✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Crie tipos de postagem personalizados e taxonomias personalizadas no WordPress por código

7

Este é um tutorial sobre como criar um tipo de postagem personalizado e uma taxonomia personalizada no WordPress por código. Veremos as armadilhas comuns e quais argumentos usar para uma criação mínima, mas suficiente. Exemplo completo incluído no final.

Onde adicionar o código

A criação de tipos de postagem personalizados (CPTs) e taxonomias personalizadas no WordPress pode ser feita dentro do functions.phparquivo de um tema ou dentro de um plugin. Lembre-se de que o tipo de postagem personalizado e a taxonomia personalizada desaparecerão se você mudar de tema ou desativar o plug-in. Portanto, é seguro remover temporariamente o registro CPT do tema e movê-lo para um plug-in – contanto que você mantenha o mesmo tipo de postagem personalizado ou identificador de taxonomia slug/ID.

Para criar (e modificar) um CPT ou taxonomia, sempre use o initgancho. Colocá-lo na raiz de functions.php(fora de um gancho) ou qualquer outro gancho causará problemas.

Criando um tipo de postagem personalizado

Para criar um tipo de postagem personalizado, você usa a register_post_typefunção. Aceita dois parâmetros; primeiro o identificador de tipo de postagem e depois um array com todos os argumentos.

O identificador de tipo de postagem é um nome de versão de slug do seu tipo de postagem. Por exemplo, os posts e páginas de tipos de postagem internos do WordPress são identificados como ‘ post‘ e ‘ page‘. O identificador deve ser único, deve seguir um conjunto de regras (minúsculas, sem espaços etc) e não ser um dos slugs reservados do WordPress.

Isso é o que eu aprendi ser o mínimo, mas perfeitamente bom o suficiente argumentos para registrar um tipo de postagem; considerando que é um CPT público normal e você deseja substituir qualquer rótulo que diga "post" ou "página" pelo nome real do seu CPT:

Uma visão geral dos argumentos

Esteja ciente de que alguns dos argumentos herdam valores de outros argumentos. A menos que sejam definidos explicitamente, eles podem ter o mesmo valor ou o oposto de outro. Vários argumentos herdam o mesmo valor ou o valor oposto do argumento public. Leia a documentação para ver qual é o valor padrão para cada argumento e se você precisa substituí-lo.

Se você concorda em ter textos no admin que se referem ao seu tipo de post como “post" ou “page”, você pode pular a definição dos argumentos do rótulo. Você provavelmente ficará bem com apenas label(nome plural) e dentro da labelsmatriz apenas singular_name(nome singular).

Se você não definir explicitamente show_in_restcomo true, seu tipo de pos personalizado usará o antigo editor clássico. Se desejar usar o editor Gutenberg para seu tipo de postagem personalizado, você precisa definir show_in_restcomo true.

O supportsargumento informa quais elementos estão disponíveis ao editar uma postagem em seu tipo de postagem. No mínimo, você provavelmente quer o título, o editor e a imagem do post em destaque.

O rewriteargumento com o mínimo de elemento array slugdiz ao WordPress para reescrever todos os posts singulares do seu tipo de post para usar esse prefixo slug. No exemplo acima, uma postagem de livro singular receberia uma URL como; ” http://example.com/book/i-robot/ “. Se você estiver interessado em como adicionar uma configuração de regra de permalink no admin para permitir que os usuários do tema decidam esse slug, dê uma olhada neste post.

O argumento para o ícone de menu (menu_icon) pode ser qualquer um dos Dashicons a seguir, ou você pode deixá-lo vazio para manter o padrão. O padrão é o mesmo ícone de Posts. No entanto, é uma boa ideia separar claramente seus tipos de postagem personalizados.

A posição do menu (menu_position) permite que você decida a posição do seu tipo de postagem personalizado no menu de administração. A documentação lista todas as posições do menu de administração, para que você possa ajustar; a posição 5 é logo após ‘Posts’.

Há outro argumento (taxonomies) para anexar uma taxonomia ao tipo de postagem. Veremos como adicionar uma taxonomia personalizada posteriormente neste post. Para adicionar taxonomias ao seu tipo de postagem, adicione este argumento ao array acima;

Uma nota sobre links permanentes e erros 404 não encontrados

Depois de adicionar seu código para registrar um tipo de postagem personalizado, você notará que a exibição de uma única postagem retornará o erro "404 não encontrado". Isso ocorre porque você precisa “atualizar permalinks”.

Vá para Configurações> Permalinks e clique no botão “Salvar alterações” (não é necessário alterar nada).

Lembre-se de que sempre que você alterar o rewriteatributo, precisará atualizar os permalinks novamente.

Como criar uma taxonomia personalizada

Uma taxonomia personalizada pode ser anexada a um dos tipos de postagem do WordPress (postagens, páginas) ou a um tipo de postagem personalizado. Você também pode anexar várias taxonomias a um tipo de postagem. Ao registrar uma taxonomia, você precisa fornecer os tipos de postagem aos quais deseja anexar.

Uma taxonomia pode ser hierárquica (como categorias de postagem onde você pode criar uma estrutura baseada em árvore) ou baseada em tags (como tags de postagem). Esta é realmente a única consideração que você precisa saber de antemão, com exceção de seu identificador slug. Assim como nos CPTs, o slug de identificação de uma taxonomia precisa ser único e seguir um conjunto de regras.

Para registrar uma taxonomia personalizada, você usa a register_taxonomyfunção. O register_taxonomyaceita o identificador exclusivo de taxonomia slug como primeiro argumento, uma matriz de tipos de postagem para anexá-la como segundo e, finalmente, uma matriz com todos os demais argumentos. Existem muitos argumentos, mas isso é o que eu experimentei ser o mínimo, mas suficiente para registrar uma taxonomia personalizada (isso adiciona uma taxonomia de tipo de tag/não hierárquica):

Recomenda-se adicionar uma chamada de função logo após o register_taxonomy, para garantir que ela seja devidamente “anexada” ao CPT: register_taxonomy_for_object_type. Defina sua taxonomia como primeiro argumento e o CPT como segundo:

register_taxonomy_for_object_type('book_author', 'book');

Da mesma forma que o tipo de postagem acima, register_taxonomyaceita muito mais argumentos, e muitos deles herdam ou dependem do valor de outros argumentos. Leia a documentação para ver qual é o valor padrão para cada argumento e se você precisa substituí-lo.

Uma visão geral dos argumentos

Se você concorda em ter textos que se referem à sua taxonomia como “tag” (se hierárquico for falso) ou “categoria” (se hierárquico for verdadeiro), você provavelmente pode pular todo o labelsarray com exceção de talvez singular_name.

O show_admin_columné útil para adicionar uma coluna mostrando os termos associados em sua taxonomia na tela de administração do CPT. Assim como nas postagens, você vê uma coluna mostrando as categorias associadas. Este argumento é definido como padrão false(não mostrar coluna), então eu gosto de substituí-lo.

Definir show_in_restcomo true é necessário para ter sua taxonomia visível no Post edit no editor Gutenberg, já que o Gutenberg depende da API REST.

Da mesma forma que com os tipos de postagem personalizados, você provavelmente receberá erros “404 não encontrados” em sua taxonomia personalizada. Vá para Configurações> Permalinks e clique no botão “Salvar alterações”.

Código de exemplo completo

Aqui está um exemplo completo de como criar um CPT para livros e anexar duas taxonomias personalizadas; gênero (hierárquico) e autor do livro (tag).

Fonte de gravação: awhitepixel.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação