Alp_Entity
Essa classe é responsável por auxiliar a criação de entidades no nosso tema. Dentro do contexto do WordPress, uma entidade estaria relacionada a um custom post type, os famosos CPTs.
Mas, aqui no V4, não queremos tratar somente dos post types, mas também dos Metaboxes e taxonomias que estão associados a esse CPT. Essa tríade é o que vai formar a entidade para nós.
Modo de Uso
A classe em si não é feita para ter objetos diretos, nem para ser herdada por outras classes. Você deve criar classes que implementem uma instância de Alp_Entity como uma propriedade interna usando, por exemplo, a trait de Alp_Entitable.
O uso da trait Alp_Entitable vai tornar uma classe "entidadezável", com a licença para o neologismo, que, em outras palavras, vai tornar sua classe capaz de produzir uma entidade. Isso deixa a classe mais flexível para tratar de outros assuntos, enquanto o objeto da Alp_Entity é quem foca em criar aquela entidade.
Propriedades
A classe é bem enxuta, e tem apenas 3 propriedades, que no momento estão marcadas como protected
, mas que é bem possível que virem private
em próximas versões.
$post_type
$protected string $post_type
Basicamente uma string que vai armazenar o identificador do post type que você criar quando utilizar o método create_post_type
. Se tiver perdido no que é um identificador, podemos dar os exemplos clássicos do WP, post
e page
. Simples assim.
$taxonomies
protected array $taxonomies
Seguindo a mesma lógica do $post_type, essa propriedade vai armazenar os identificadores das taxonomias, já que um post type pode ter de zero a várias taxonomias associadas.
$metaboxes
protected Alp_Metabox $metaboxes
Aqui será armazenado um objeto Alp_Metabox com todas as metaboxes associadas ao post type. Não obrigatoriamente o post type vai implementar metaboxes, mas é bem raro que algum não implemente.
Métodos a saber
create_post_type()
public function create_post_type(string $singular, string $plural, ?string $id = null, bool $feminino = true, string $dashicon = 'post', bool $public = true, bool $thumbnail = false, array $more_args = []): self
Com essa assinatura enorme, essa função vai ser responsável por criar o post type dentro do WordPress. Ela oferece muitos parâmetros opcionais já dentro da própria assinatura para atender uma alta gama de customizações. Mas se faltar algo, você ainda tem o $more_args ali como último parâmetro, onde você pode passar o tradicional array do WordPress.
Os parâmetros obrigatórios são apenas nome no singular e nome no plural. Embora o id de um post type seja importante, ele nem precisa ser passado, pois a implementação do método entende que você vai querer usar o nome no singular de forma sanitizada.
Como quarto parâmetro temos se o post type é feminino (ex: Premiação) ou não (ex: Projeto). Daí por diante, você pode escolher o dashicon (da lista dos ícones do WordPress), se vai ser público (aparecer nas buscas, ter arquivo do post type, etc), e se vai precisar ter thumbnail.
O método retorna o próprio objeto que você está trabalho para que você possa encadear com novas ações.
create_taxonomy()
public function create_taxonomy(string $nome, string $id): self
Após você criar o post type com o método acima, você poderá criar taxonomias para ele, usando esse método bem básico. Você só vai precisar passar o nome da taxonomia, que é aquilo que vemos escrito nas telas, e o id, que é o nome interno, usado nos códigos.
O método retorna o próprio objeto, então você pode encadear se for criar outras taxonomias, por exemplo.
create_metaboxes()
public function create_metaboxes(): Alp_Metabox
Esse método vai criar um objeto de Alp_Metabox que será amarrado junto ao post type dessa classe, e ficará armazenado ali na propriedade $metaboxes
.
Já é automaticamente retornado o objeto da Alp_Metabox para que você continue os trabalhos nele. Então clique aqui para ler sobre a Alp_Metabox.
Vale também mencionar que há um getter na classe, get_metaboxes()
, caso precise novamente desse objeto.
create_labels_cpt()
private function create_labels_cpt(string $singular, string $plural, bool $feminino = false): array
Esse método privado é um dos charmes da classe, era uma função utilitária em versões anteriores, e no V4 chega pra tomar seu posto como método.
Basicamente auxilia ali o create_taxonomy()
a já criar todos os labels para o post type, usando os dados de singular, plural e gênero.
Exemplo de Uso
Aqui temos um exemplo de uma criação de um post type e duas taxonomias para ele, bem como a inicialização dos metaboxes.
/* Objeto da classe */
$entidade
->create_post_type('Colaborador','Colaboradores','colaborador',true,...)
->create_taxonomy('Categoria','colaborador_cat')
->create_taxonomy('Tipo','colaborador_tipo')
->create_metaboxes();
Conclusão
A classe Alp_Entity
é uma ferramenta para a criação de entidades no WordPress, abrangendo custom post types, taxonomias e metaboxes. Ela permite uma implementação mais prática, facilitando a criação e gerenciamento dessas entidades através de métodos mais intuitivos e bem definidos, sem que o desenvolvedor precise se preocupar com inúmeros arrays de configurações.