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âmetrosO ú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 TypesUtilizando este método, você não precisa instanciar a classe \Onyx\Cpt()
.
#
Filtros de PesquisaAo registrar uma Taxonomia personalizada, você pode também adicionar filtros de pesquisa na tabela de listagem do admin do WordPress
#
Colunas PersonalizadasVocê 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 | ✘ |
#
addParam | 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 | ✘ |
#
orderUm array com a chave ou nome da coluna
. As colunas na tabela irão aparecer na ordem de inclusão do array.
#
hideUm 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 CapacidadesAo criar um post type, você poderá definir capacidades personalizadas caso necessário.
#
capability_typeO 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_post
comoedit_cap
read_post
comoread_cap
delete_post
comodelete_cap
edit_posts
comoedit_caps
edit_others_posts
comoedit_others_caps
delete_posts
comodelete_caps
publish_posts
comopublish_caps
read_private_posts
comoread_private_caps
create_posts
comoedit_caps
#
custom_capsO 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_product
read_product
delete_product
edit_products
edit_others_products
publish_products
read_private_products
create_products
read_products
delete_products
delete_private_products
delete_published_products
delete_others_products
edit_private_products
edit_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 TypeAlé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 classeApó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.