Às vezes, os campos padrão do tipo de post personalizado podem não ser suficientes, e você precisa armazenar dados adicionais em um tipo de post personalizado.
Felizmente, o WordPress oferece algo chamado metadados do post, que permite armazenar informações adicionais sobre um post.
Vamos ver como você pode usar metadados do post em um post ou tipo de post personalizado.
O que são metadados do post
Metadados do post são uma forma de armazenar informações adicionais sobre um post no banco de dados do WordPress.
Os metadados do post são armazenados na tabela postmeta como pares de chave-valor. Se você observar a tabela postmeta no banco de dados do WordPress, verá que ela tem quatro colunas: meta_id, post_id, meta_key e meta_value.
post_id é o ID do post ao qual os metadados estão associados. meta_key é o nome do campo de metadados, e meta_value é o seu valor.
Adicionando metadados ao post
Você pode adicionar metadados a um post usando a função add_post_meta. Essa função aceita três parâmetros: o ID do post, o nome dos metadados e o valor dos metadados.
Então, digamos que você queira adicionar um campo de metadados a um post com o ID 1 e queira armazenar o local onde o post foi escrito como London.
Você poderia usar o seguinte código:
add_post_meta( 1, 'location', 'London' );
Há outras funções para trabalhar com metadados do post, como update_post_meta, delete_post_meta e get_post_meta.
Você pode ler mais sobre essas funções e como usá-las em plugins na página Metadados do manual do desenvolvedor de plugins.
O painel Campos personalizados
Adicionar metadados ao post por meio de código é uma opção, mas também é possível permitir que os administradores do site adicionem metadados por meio da interface de administração do WordPress.
Uma forma de fazer isso é usar o painel Campos personalizados do tipo de post.
Para ativar o painel Campos personalizados, primeiro você precisará verificar se o seu tipo de post personalizado é compatível com metadados.
Para fazer isso, você precisa adicionar ou atualizar o argumento supports para incluir suporte a custom-fields
Em seguida, ao editar um tipo de post personalizado, clique no ícone Opções do editor, selecione Preferências, clique em Painéis e ative a opção Campos personalizados.
Isso atualizará o editor, e você verá o painel Campos personalizados na parte inferior da tela.
Aqui você pode adicionar um novo campo personalizado e atribuir a ele um nome e um valor.
Por exemplo, se você quisesse adicionar o número ISBN de um livro, poderia adicionar um novo campo personalizado com o nome isbn e o valor do número ISBN.
Esse painel usa a função add_post_meta para adicionar os metadados ao post.
Nomes de campos pré-preenchidos para o painel Campos personalizados
Também é possível preencher o campo Nome do painel Campos personalizados com uma lista de campos de metadados predefinidos.
Para fazer isso, você precisa usar o filtro postmeta_form_keys e adicionar os nomes dos campos de metadados que deseja exibir no painel Campos personalizados.
O filtro postmeta_form_keys é executado antes que o HTML do painel Campos personalizados seja renderizado e recebe dois parâmetros: um array de chaves de metadados e o objeto do post.
Se nenhuma outra chave for definida, uma consulta será executada para buscar as chaves de quaisquer metadados existentes do post.
Assim, ao atualizar o array de chaves de metadados, você pode adicionar chaves de campos de metadados ao painel Campos personalizados para facilitar que seus usuários adicionem os metadados corretos.
Veja um exemplo de como fazer isso:
add_filter( 'postmeta_form_keys', 'bookstore_add_isbn_to_quick_edit', 10, 2 );
function bookstore_add_isbn_to_quick_edit( $keys, $post ) {
if ( $post->post_type === 'book' ) {
$keys[] = 'isbn';
}
return $keys;
}
Você registra uma função de callback no filtro postmeta_form_keys e define os argumentos aceitos como 2 para aceitar ambos os argumentos do filtro.
Em seguida, verifique se o tipo do post é um livro e, se for, adicione a opção isbn ao array $keys e depois retorne esse array.
Se o tipo de post for book, ele adicionará o campo de metadados isbn ao painel Campos personalizados.
Se você criar ou editar um livro com o painel Campos personalizados ativado, verá o campo isbn disponível para adicionar metadados ao post.
Metaboxes personalizados
Outra forma de permitir que os administradores do site adicionem metadados ao post é usar metaboxes personalizados.
No entanto, trabalhar com metaboxes personalizados também exige um bom entendimento do desenvolvimento com foco em segurança, mas, por enquanto, você pode ler sobre eles na página Metaboxes personalizados do manual do desenvolvedor de plugins.
Você aprenderá a trabalhar com metaboxes no caminho de aprendizagem para desenvolvedores de plugins.