Post Types Personalizados
O Onyx provê a possibilidade de criação de Post Types personalizados que podem ser feitas de duas formas. A primeira por meio deste arquivo ./core/config/cpts.php e a outra é instanciando um objeto da classe \Onyx\Cpt().
Parâmetros#
O único parâmetro obrigatório é o name(s) do post type podendo ser uma string como podemos ver no Exemplo 1 ou um array como no Exemplo 2. O Onyx vai extrair automaticamente slug, labels, options caso não sejam fornecidos assim como tentará aplicar o plural nas labels necessárias.
caution
Caso não fornecido, o parâmetro slug será utilizado para criação do post type e é ele que deverá ser utilizado para queries e relacionamentos. Por padrão o slug é extraído do valor name transformado para o plural.
Ex: 'Gêneros de Filme' terá como plural 'Gêneros de Filmes' e slug 'generos-de-filmes'.
| Param | Tipo | Descrição | Obrigatório |
|---|---|---|---|
name(s) | string/array | Nome do Post Type | ✔ |
icon | string | Ícone do Post Type | ✘ |
labels | array | Labels customizadas | ✘ |
options | array | Argumentos de funcionamento | ✘ |
filters | array | Filtros de pesquisa (selects) no admin | ✘ |
columns | array | Registrar colunas personalizadas no admin | ✘ |
info
Para saber as opções das labels e options, visite a documentação do WordPress register_post_type() e get_post_type_labels()
info
Ao adicionar parâmetros como labels ou options, você não precisa incluir todas as opções. Somente os parâmetros que você determinar serão substituídos no modelo.
Criando Post Types#
Utilizando este método, você não precisa instanciar a classe \Onyx\Cpt().
Filtros de Pesquisa#
Ao registrar uma Taxonomia personalizada, você pode também adicionar filtros de pesquisa na tabela de listagem do admin do WordPress
Colunas Personalizadas#
Você pode incluir, remover ou reordenar colunas personalizadas na tabela de listagem do admin do WordPress ao registrar um Post Type. Isso é bem útil quando você tem custom fields ou taxonomias personalizadas
info
Para adicionar colunas de taxonomias, ver registro em Taxonomia.
| Param | Tipo | Descrição | Obrigatório |
|---|---|---|---|
add | array | Colunas para adicionar | ✘ |
order | array | Ordenação das colunas | ✘ |
hide | array | Remover colunas | ✘ |
add#
| Param | Tipo | Descrição | Obrigatório |
|---|---|---|---|
label | string | Label da coluna | ✔ |
populate | callable | Função que recebe 2 valores fn($column, $post_id) | ✔ |
sort | string | Meta Key para ordenação | ✘ |
numeric | bool | Ordenar via numeral ou string | ✘ |
order#
Um array com a chave ou nome da coluna. As colunas na tabela irão aparecer na ordem de inclusão do array.
hide#
Um array contendo a chave ou nome da coluna. As colunas adicionadas aqui serão removidas da tabela de listagem do admin.
Exemplo de Uso#
Regras de Capacidades#
Ao criar um post type, você poderá definir capacidades personalizadas caso necessário.
capability_type#
O atributo capability_type cria automaticamente as capacidades primitivas do WordPress baseadas no valor passado (edit_MYCPT, edit_others_MYCPT, delete_MYCPT, publish_MYCPT, read_private_MYCPT)
Este exemplo irá setar:
edit_postcomoedit_capread_postcomoread_capdelete_postcomodelete_capedit_postscomoedit_capsedit_others_postscomoedit_others_capsdelete_postscomodelete_capspublish_postscomopublish_capsread_private_postscomoread_private_capscreate_postscomoedit_caps
custom_caps#
O atributo custom_caps adiciona automaticamente todas as capacidades primitivas extras do WordPress baseadas no valor passado. Ao usar custom_caps, não é necessário passar o parâmetro capability_type. O Onyx theme usará o name do Post Type para gerar as capacidades.
Este exemplo irá setar regras mais completas:
edit_productread_productdelete_productedit_productsedit_others_productspublish_productsread_private_productscreate_productsread_productsdelete_productsdelete_private_productsdelete_published_productsdelete_others_productsedit_private_productsedit_published_products
info
Se você precisar de regras mais personalizadas, utilize o atributo capabilities padrão do WordPress e determine manualmente todas as capacidades necessárias.
Instanciando um Post Type#
Além de poder criar um Post Type utilizando o registro no arquivo ./core/config/cpts.php, você pode instanciar um objeto e criar manualmente seu CPT usando a classe \Onyx\Cpt
Caso esteja extendendo a classe \Onyx\Cpt você ainda pode utilizar os métodos add_action e add_filter personalizados para criar hooks do wordpress dentro de seu objeto mais facilmente.
info
somente o parâmetro name(s) é obrigatório, podentro ser uma string ou um array.
Criando o Objeto#
Extendendo a classe#
Após a criação do post type, não esqueça de necessário registrá-lo em ./core/config/app.php como no exemplo abaixo.