Os custom fields do WordPress, também chamados post meta, são pares chave valor anexados a um post, página ou custom post type. Vivem na tabela wp_postmeta com colunas meta_id, post_id, meta_key e meta_value (longtext). O WordPress os suporta desde a versão 1.5 (fevereiro de 2005). A interface nativa fica sob Opções de tela ativando a caixa de Custom Fields, mas raramente é usada na prática porque Advanced Custom Fields (ACF) e plugins similares oferecem uma experiência muito melhor. O ACF foi criado por Elliot Condon em 2011, adquirido pela Delicious Brains em 2021 e pela WP Engine em maio de 2022. Em 2025 o ACF tem mais de 2 milhões de instalações ativas. O ACF adiciona field groups, mais de 30 tipos de campos (Text, Number, Email, Image, Gallery, File, Repeater, Flexible Content, Group, Relationship, Post Object, Taxonomy, User, Date Picker, Color Picker, Google Map, oEmbed, WYSIWYG), lógica condicional, regras de localização e uma API PHP limpa: get_field( 'price' ), the_field( 'subtitle' ), have_rows( 'gallery' ). O ACF gratuito inclui a maioria dos campos. O ACF Pro (em advancedcustomfields.com, cerca de 49 USD/ano para um site até 249 USD vitalício ilimitado) adiciona Repeater, Flexible Content, Gallery, Clone, Options Pages e registro de blocos. ACF Blocks (desde ACF 5.8, agosto de 2019) permite registrar blocos Gutenberg em PHP com campos ACF. Em 10.10.2024 o WordPress.org removeu o ACF do diretório de plugins após uma disputa de marca com a WP Engine e o substituiu por um fork da comunidade chamado Secure Custom Fields (SCF). O ACF Pro continuou disponível em advancedcustomfields.com. Em 2025 ACF (da WP Engine) e SCF coexistem como plugins separados.
Como é a tabela wp_postmeta?
+-----------+---------+-----------------+----------------+
| meta_id | post_id | meta_key | meta_value |
+-----------+---------+-----------------+----------------+
| 1 | 42 | _edit_lock | 1736178921:1 |
| 2 | 42 | price | 19.99 |
| 3 | 42 | subtitle | Edição limitada|
| 4 | 42 | gallery_0_image | 1023 |
+-----------+---------+-----------------+----------------+Custom fields nativos
- Abra um post no editor.
- Três pontos no canto superior direito, Preferências, Painéis, ative Custom Fields.
- Nome (meta_key) e valor (meta_value).
- No tema:
get_post_meta( $post_id, 'price', true ).
Advanced Custom Fields (ACF)
- Repeater: grupos aninhados repetíveis.
- Flexible Content: seções predefinidas em qualquer ordem.
- Gallery: múltiplas imagens.
- Clone: reutilizar field groups.
- Options Pages: configurações globais.
- ACF Blocks: blocos Gutenberg em PHP com campos ACF.
Como usar o ACF
- Instale ACF/SCF ou baixe ACF Pro.
- Custom Fields, Add New, nomeie o field group.
- Adicione Text subtitle, Number price, Image hero_image, Repeater faqs.
- Location: post type igual a product.
- Publique.
<?php
$subtitle = get_field( 'subtitle' );
$price = get_field( 'price' );
$hero = get_field( 'hero_image' );
?>O fork ACF/SCF (outubro de 2024)
Em 27.09.2024 houve uma disputa pública entre o WordPress.org e a WP Engine. Em 10.10.2024 Matt Mullenweg removeu o ACF do diretório e o substituiu pelo Secure Custom Fields (SCF). Sites com atualizações automáticas receberam o SCF. O ACF Pro não foi afetado e segue sendo vendido em advancedcustomfields.com.
Alternativas ao ACF
| Plugin | Instalações ativas | Pontos fortes |
|---|---|---|
| ACF | 2 milhões+ | UI polida, ACF Pro |
| SCF | 1 milhão+ | gratuito, substituto direto |
| Meta Box | 400.000+ | code first, rápido |
| CMB2 | 300.000+ | biblioteca de desenvolvedor |
| Pods | 100.000+ | CPTs + campos + tabelas |
Custom fields e REST API
register_post_meta()comshow_in_rest => trueexpõe o campo sob meta em /wp-json/wp/v2/<post-type>/<id>.- O ACF Pro adiciona suporte REST automaticamente sob a propriedade acf.
- WPGraphQL for ACF adiciona field groups ao schema GraphQL.
Desempenho
- get_post_meta() sem argumentos carrega TODOS os meta do post e faz cache.
- Consultas por meta_key são lentas em escala (não indexado). +50.000 posts: tabela dedicada ou ElasticPress.
- Desative o dropdown nativo com
add_filter( 'postmeta_form_keys', '__return_false' ). - O ACF armazena chave de referência para cada campo (_subtitle com field_64ab123), o que duplica linhas mas mantém consistência.
Padrões comuns
- Opções globais com ACF Options Pages.
- Construtor de páginas sem construtor (Flexible Content).
- Posts relacionados (Post Object, Relationship).
- Seções reutilizáveis (Clone).
- Campos condicionais.
O que o InspectWP verifica
O InspectWP detecta ACF, SCF e plugins similares escaneando scripts carregados, classes body e endpoints REST API. O relatório identifica setups headless que consomem a extensão REST do ACF e sinaliza metas expostos que poderiam vazar dados internos.