Criando uma Meta Box

Como falamos no post anterior, Campos Customizados servem para armazenar metadados para Posts, Páginas e outros tipos de post. Temos a interface padrão do WP para acrescentar campos customizados, a Caixa de Meta, ou Meta Box.

Mas, como o WordPress é extensamente customizável, podemos criar campos de formulário para o preenchimento de nossos campos customizados. Esses campos de formulário são chamados de Caixas Meta, ou Meta Boxes.

Para criar uma meta box, basta usar a criar um gancho de ação (action hook). Este hook chama a sua função que irá configurar os meta boxes:

PHP

Em nossa função de setup colocamos mais dois hooks. Enquanto o primeiro irá adicionar a meta box, o segundo chama a função que salva, atualiza ou deleta os dados:

PHP

Só por curiosidade, na primeira chamada usei uma função anônima, já que o código era mais simples (só a chamada de add_meta_box), enquanto no segundo chamei uma função declarada mais abaixo.

A função movie_review_add_meta_box adiciona a meta Box com os campos de formulário para preenchimento:

PHP

Podemos notar na linha 5 uma chamada para wp_nonce_field, que serve para validar a submissão do formulário.

Por último a função movie_review_save_meta_box faz a validação da submissão usando o wp_verify_nonce para validar o nonce_field, verifica a submissão e atualiza, salva ou deleta o valor do meta field de acordo com o caso.

PHP

Como podemos ver, na linha 14 usamos uma função para fazer a validação dos dados preenchidos pelo usuário, para evitar problemas de XSS e afins.

E o meta box está pronto para aparecer na barra lateral, ou do editor clássico ou do gutenberg:

Meta box em ação no Gutenberg, com os atores Humphrey Bogart e Ingrid Bergman preenchidos

Para usar este campo customizado no seu tema é só chamar get_post_meta com a chave:

PHP

No exemplo do post anterior tínhamos mais de um campo, eles podem ser adicionados à função movie_review_add_meta_box ou podemos criar um novo meta box para cada campo. Fica a critério do freguês.

O código deste post foi baseado no excelente post do Justin Tadlock na Smashing Magazine e na documentação do próprio WordPress. Vale uma visita aos dois para ter mais detalhes.

Apesar de um pouco trabalhoso, é simples. Para facilitar nossa vida, alguns starter themes, frameworks, e plugins oferecem algumas maneiras de agilizar a criação e uso de meta boxes. Em breve falarei sobre o Advanced Custom Fields, ou ACF, um dos plugins mais usados pra isso.

Até a próxima, se não for antes.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *