I custom fields di WordPress, detti anche post meta, sono coppie chiave valore allegate a un post, pagina o custom post type. Vivono nella tabella wp_postmeta con le colonne meta_id, post_id, meta_key e meta_value (longtext). WordPress li supporta dalla versione 1.5 (febbraio 2005). L’interfaccia nativa è sotto Opzioni schermata abilitando la metabox Custom Fields, ma è raramente usata in pratica perché Advanced Custom Fields (ACF) e plugin simili offrono un’esperienza di editing molto migliore. ACF è stato creato da Elliot Condon nel 2011, acquisito da Delicious Brains nel 2021 e da WP Engine a maggio 2022. Nel 2025 ACF ha oltre 2 milioni di installazioni attive. ACF aggiunge field groups, oltre 30 tipi di campo (Text, Number, Email, Image, Gallery, File, Repeater, Flexible Content, Group, Relationship, Post Object, Taxonomy, User, Date Picker, Color Picker, Google Map, oEmbed, WYSIWYG), logica condizionale, regole di posizione e un’API PHP pulita: get_field( 'price' ), the_field( 'subtitle' ), have_rows( 'gallery' ). L’ACF gratuito include la maggior parte dei campi. ACF Pro (da advancedcustomfields.com, intorno a 49 USD/anno per un sito fino a 249 USD a vita illimitato) aggiunge Repeater, Flexible Content, Gallery, Clone, Options Pages e registrazione di blocchi. ACF Blocks (da ACF 5.8, agosto 2019) permette di registrare blocchi Gutenberg in PHP con campi ACF. Il 10.10.2024 WordPress.org ha rimosso ACF dalla directory dei plugin dopo una disputa di marchio con WP Engine e l’ha sostituito con un fork della comunità chiamato Secure Custom Fields (SCF). ACF Pro è rimasto disponibile su advancedcustomfields.com. Nel 2025 ACF (di WP Engine) e SCF coesistono come plugin separati.
Come appare la tabella wp_postmeta?
+-----------+---------+-----------------+----------------+
| meta_id | post_id | meta_key | meta_value |
+-----------+---------+-----------------+----------------+
| 1 | 42 | _edit_lock | 1736178921:1 |
| 2 | 42 | price | 19.99 |
| 3 | 42 | subtitle | Edizione limit.|
| 4 | 42 | gallery_0_image | 1023 |
+-----------+---------+-----------------+----------------+Custom fields nativi
- Apri un post nell’editor.
- Tre puntini in alto a destra, Preferenze, Pannelli, abilita Custom Fields.
- Nome (meta_key) e valore (meta_value).
- Nel tema:
get_post_meta( $post_id, 'price', true ).
Advanced Custom Fields (ACF)
- Repeater: gruppi annidati ripetibili.
- Flexible Content: sezioni predefinite in qualsiasi ordine.
- Gallery: immagini multiple.
- Clone: riusare field groups.
- Options Pages: impostazioni globali del sito.
- ACF Blocks: blocchi Gutenberg in PHP con campi ACF.
Come usare ACF
- Installa ACF/SCF o scarica ACF Pro.
- Custom Fields, Add New, dai un nome al field group.
- Aggiungi Text subtitle, Number price, Image hero_image, Repeater faqs.
- Location: post type uguale a product.
- Pubblica.
<?php
$subtitle = get_field( 'subtitle' );
$price = get_field( 'price' );
$hero = get_field( 'hero_image' );
?>Il fork ACF/SCF (ottobre 2024)
Il 27.09.2024 è scoppiata una disputa pubblica tra WordPress.org e WP Engine. Il 10.10.2024 Matt Mullenweg ha rimosso ACF dalla directory e lo ha sostituito con Secure Custom Fields (SCF). I siti con aggiornamenti automatici hanno ricevuto SCF. ACF Pro non è stato toccato e continua a essere venduto su advancedcustomfields.com.
Alternative ad ACF
| Plugin | Installazioni attive | Punti forti |
|---|---|---|
| ACF | 2 milioni+ | UI rifinita, ACF Pro |
| SCF | 1 milione+ | gratuito, sostituto diretto |
| Meta Box | 400.000+ | code first, più veloce |
| CMB2 | 300.000+ | libreria sviluppatore |
| Pods | 100.000+ | CPT + campi + tabelle |
Custom fields e REST API
register_post_meta()conshow_in_rest => trueespone il campo sotto meta su /wp-json/wp/v2/<post-type>/<id>.- ACF Pro aggiunge supporto REST automaticamente sotto la proprietà acf.
- WPGraphQL for ACF aggiunge i field groups allo schema GraphQL.
Prestazioni
- get_post_meta() senza argomenti carica TUTTI i meta del post e li mette in cache.
- Query per meta_key sono lente su grande scala (non indicizzato). Oltre 50.000 post: tabella dedicata o ElasticPress.
- Disabilita il dropdown nativo con
add_filter( 'postmeta_form_keys', '__return_false' ). - ACF salva una chiave di riferimento per ogni campo (_subtitle con field_64ab123), raddoppiando le righe ma garantendo coerenza.
Pattern comuni
- Opzioni globali via ACF Options Pages.
- Page builder senza un builder via Flexible Content.
- Post correlati (Post Object, Relationship).
- Sezioni riutilizzabili (Clone).
- Campi condizionali.
Cosa controlla InspectWP
InspectWP rileva ACF, SCF e plugin simili scansionando script caricati, classi body e endpoint REST API. Il report identifica setup headless che consumano l’estensione REST di ACF e segnala meta esposti che potrebbero far trapelare dati interni.