Criar campos personalizados automaticamente ao publicar posts no WordPress é uma maneira poderosa de economizar tempo e reduzir tarefas repetitivas, especialmente se você gerencia um site grande ou trabalha em funcionalidades personalizadas.
Em vez de adicionar manualmente os mesmos campos personalizados toda vez que você publica um certo tipo de conteúdo, você pode automatizar o processo e manter as coisas consistentes.
Trabalhamos em muitos projetos WordPress ao longo dos anos, construindo tudo, desde blogs simples a sites complexos com recursos avançados. Ao longo do caminho, adquirimos muitas dicas práticas como esta que podem tornar seu fluxo de trabalho mais rápido e eficiente.
Neste tutorial, mostraremos como adicionar campos personalizados automaticamente ao publicar posts no WordPress, passo a passo.

Por que Adicionar Campos Personalizados Automaticamente?
Campos personalizados permitem que você adicione informações adicionais aos seus posts. Essas informações podem ser exibidas em seu site, mantidas privadas ou usadas por temas e plugins para estender a funcionalidade do seu site WordPress.
Existem muitas maneiras criativas de usar campos personalizados. Você encontrará uma lista de ideias úteis em nosso guia dicas, truques e hacks de campos personalizados.
Em alguns casos, você desejará que um campo personalizado seja criado automaticamente sempre que você publicar uma postagem. Isso é especialmente útil quando você está adicionando funcionalidades ao WordPress para que possa usá-lo como mais do que um simples blog.
Por exemplo, no WPBeginner, usamos esse método ao criar um site de galeria. Queríamos armazenar URLs curtas para cada item enviado para a galeria. Portanto, criamos automaticamente um campo personalizado para armazenar a URL curta quando cada postagem era publicada.
Esse tipo de automação ajuda os desenvolvedores a economizar tempo, reduzir erros e criar sites WordPress mais poderosos com menos esforço manual.
Agora, vamos ver como configurá-lo.
Adicionando Campos Personalizados Automaticamente na Publicação de Postagens
Este método envolve adicionar um trecho de código personalizado ao arquivo functions.php do seu tema. Não recomendamos editar os arquivos do seu tema para usuários inexperientes, pois até mesmo um pequeno erro pode quebrar seu site.
Em vez disso, mostraremos como usar o plugin WPCode neste tutorial.

O WPCode facilita a adição de trechos de código no WordPress sem ter que editar o arquivo functions.php do seu tema. Você também pode gerenciar todos os seus trechos de código em uma tela central.
Se esta é a primeira vez que você adiciona código ao WordPress, então você deve conferir nosso guia sobre como copiar e colar trechos de código no WordPress para mais detalhes.
Para começar, você precisa instalar e ativar o plugin gratuito WPCode. Se precisar de ajuda, consulte nosso tutorial sobre como instalar um plugin do WordPress.
Observação: A versão gratuita do WPCode tem tudo o que você precisa para adicionar código personalizado no WordPress. Para recursos mais avançados, como snippets agendados, pixels de conversão e muito mais, você pode fazer o upgrade para o WPCode Pro.
Assim que o plugin for ativado, um novo item de menu rotulado como ‘Code Snippets’ será adicionado à sua barra de administração do WordPress. Clique nele e, em seguida, pressione o botão ‘Add New’ na próxima tela.

Isso o levará à Biblioteca de Snippets do WPCode.
A partir daqui, navegue até a opção ‘Add Your Custom Code (New Snippet)’ e clique no botão ‘+ Add Custom Snippet’ abaixo dela.

Em seguida, selecione ‘PHP Snippet’ como o tipo de código na lista de opções que aparecem na tela.

Depois disso, você precisa dar um título ao snippet e, em seguida, copiar o seguinte código e colá-lo na caixa ‘Code Preview’.
add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
Você terá que substituir ‘field-name’ e ‘custom value’ pelo nome e valor reais que deseja usar para o campo personalizado.

Em seguida, role para baixo até a seção ‘Insertion’. Aqui, você precisará deixar o método ‘Auto Insert’ selecionado.

Com o método Auto Insert, o snippet será automaticamente inserido e executado no local correto.
Quando terminar, você precisará alternar o interruptor de ‘Inactive’ para ‘Active’ e, em seguida, clicar no botão ‘Save Snippet’.

Assim que o snippet for ativado, o campo personalizado será criado sempre que você publicar uma postagem.
Esperamos que este tutorial tenha ajudado você a aprender como adicionar campos personalizados automaticamente na publicação de posts no WordPress. Você também pode querer aprender como exibir campos personalizados fora do loop no WordPress ou conferir nossa lista de plugins essenciais do WordPress para expandir seu site.
Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Jiří Vaněk
Se eu tiver um site com vários usuários e quiser que uma biografia do autor seja inserida automaticamente quando um artigo for publicado, este guia pode ser usado? Ou seja, os campos personalizados podem ser usados para garantir que uma breve biografia do autor seja inserida no início, dependendo de quem escreve o artigo? Eu gostaria que isso fosse automatizado dessa forma. Atualmente, fazemos isso usando o Elementor, onde cada autor tem seu modelo salvo e deve inseri-lo manualmente no início.
WPBeginner Support
O que você está procurando é uma caixa de biografia do autor, que abordamos em nosso guia abaixo:
https://www.wpbeginner.com/wp-tutorials/how-to-add-an-author-info-box-in-wordpress-posts/
Admin
Sateesh Raghuwanshi
Preciso adicionar esta ação para um tipo de post personalizado chamado ‘ad_system’
nayan
Quero adicionar o ID da categoria para o post na tabela post_meta. Como a função function add_custom_field_automatically($post_ID) pode ser modificada para acomodar isso?
Obrigado
chris
Em vez de adicionar o campo personalizado no momento da criação do post, como faço para exibir um campo personalizado por padrão na página de administração?
puanthanh
não está sendo adicionado ao tipo de post personalizado
Equipe Editorial
Se você notar, o código acima não tem nada relacionado aos tipos de post personalizados. Ele só adiciona ao tipo de conteúdo Post e Página. Portanto, você teria que especificar o hook para seu tipo de post personalizado.
Admin
puanthanh
Obrigado pela resposta. Você pode me ajudar com este código.
add_action(‘publish_page’, ‘add_custom_field_automatically’);
add_action(‘publish_post’, ‘add_custom_field_automatically’);
add_action( ‘save_post’, ‘add_custom_field_automatically’ );
function add_custom_field_automatically($post_ID) {
global $post;
if(!wp_is_post_revision($post_ID)) {
global $wpdb;
$user_id = $wpdb->get_var("SELECT post_author FROM $wpdb->posts WHERE ID = $post_ID");
$themename = $wpdb->get_var("SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = ‘themeperauthor’ AND user_id = $user_id");
add_post_meta($post_ID, ‘themeperauthor’, $themename, true);
}
}
Quando o campo de meta do usuário for alterado, quero excluir automaticamente o valor do campo personalizado e atualizar com o novo.
brian
Tenho trabalhado em adicionar alguns campos personalizados ocultos na publicação/atualização de posts (precedendo o nome do campo com “_”), mas por algum motivo preciso atualizar o post duas vezes antes que as entradas wp_postmeta sejam gravadas no banco de dados.
Tentei mexer na prioridade e experimentar outros ganchos de ação (draft_to_publish, edit_post, etc.), mas isso não parece fazer diferença.
Alguma ideia?
Equipe Editorial
você está usando o truque do Otto com a API transitória?
Admin
Boba
Thanks for including the source link
Equipe Editorial
Thanks for providing an amazing tip
Admin
Daniel Suarez
Obrigado Otto, mais uma ótima dica!
Piet
isso também funcionará para tipos de postagem personalizados?
algo como add_action(‘publish_custom-post-typ-name’, ‘add_custom_field_automatically’);
Otto
Sim, funcionará.
Uma desvantagem desta técnica que as pessoas devem estar cientes é que, se alguém editar uma postagem publicada, este hook SERÁ acionado novamente na edição. Portanto, você precisa verificar os metadados antes de adicioná-los, ou atualizá-los, ou fazer o que fizer mais sentido para o seu caso de uso.
Se você quiser que seu código seja acionado apenas na publicação inicial, você pode usar o hook transition_post_status. Este hook funciona assim:
add_action('transition_post_status','example',10,3);
function example($new, $old, $post) {
// $new é o novo status da postagem ('publish')
// $old é o status antigo da postagem ('draft')
// $post é o Objeto de Postagem completo (então use $post->ID para o ID, etc)
}
Então, aqui você pode fazer uma verificação para algo como isto:
if ($new == 'publish' && $old != 'publish')
Para que seu código seja usado apenas quando o status da postagem realmente transitar para publicado a partir de qualquer status anterior. Este hook é acionado ao mesmo tempo que os hooks {$status}_{$post-type}, então a operação deles é basicamente a mesma.
Piet
Obrigado Otto, vou brincar um pouco com isso!
Equipe Editorial
Obrigado Otto pela clarificação.
Admin
Vivek Parmar
obrigado por esta dica útil. anteriormente, ao usar campos personalizados, eu tinha que trabalhar manualmente. agora isso fará isso automaticamente. obrigado por economizar meu tempo precioso