Les custom fields WordPress, aussi appelés post meta, sont des paires clé valeur attachées à un article, une page ou un custom post type. Ils vivent dans la table wp_postmeta avec les colonnes meta_id, post_id, meta_key et meta_value (longtext). WordPress les supporte depuis la version 1.5 (février 2005). L’interface native est sous Options de l’écran en activant la boîte Custom Fields, mais elle est rarement utilisée car Advanced Custom Fields (ACF) et les plugins similaires offrent une bien meilleure expérience d’édition. ACF a été créé par Elliot Condon en 2011, racheté par Delicious Brains en 2021 et par WP Engine en mai 2022. En 2025 ACF compte plus de 2 millions d’installations actives. ACF apporte des field groups, plus de 30 types de champs (Text, Number, Email, Image, Gallery, File, Repeater, Flexible Content, Group, Relationship, Post Object, Taxonomy, User, Date Picker, Color Picker, Google Map, oEmbed, WYSIWYG), de la logique conditionnelle, des règles de localisation et une API PHP propre : get_field( 'price' ), the_field( 'subtitle' ), have_rows( 'gallery' ). L’ACF gratuit inclut la plupart des champs. ACF Pro (sur advancedcustomfields.com, environ 49 USD/an pour un site jusqu’à 249 USD à vie pour illimité) ajoute Repeater, Flexible Content, Gallery, Clone, Options Pages et l’enregistrement de blocs. ACF Blocks (depuis ACF 5.8, août 2019) permet d’enregistrer des blocs Gutenberg en PHP avec des champs ACF. Le 10.10.2024 WordPress.org a retiré ACF du répertoire de plugins après un litige de marque avec WP Engine et l’a remplacé par un fork communautaire appelé Secure Custom Fields (SCF). ACF Pro est resté disponible sur advancedcustomfields.com. En 2025 ACF (de WP Engine) et SCF coexistent en tant que plugins séparés.
À quoi ressemble la table wp_postmeta ?
+-----------+---------+-----------------+----------------+
| meta_id | post_id | meta_key | meta_value |
+-----------+---------+-----------------+----------------+
| 1 | 42 | _edit_lock | 1736178921:1 |
| 2 | 42 | price | 19.99 |
| 3 | 42 | subtitle | Édition limitée|
| 4 | 42 | gallery_0_image | 1023 |
+-----------+---------+-----------------+----------------+Custom fields natifs
- Ouvrez un article dans l’éditeur.
- Trois points en haut à droite, Préférences, Panneaux, activez Custom Fields.
- Nom (meta_key) et valeur (meta_value).
- Dans le thème :
get_post_meta( $post_id, 'price', true ).
Advanced Custom Fields (ACF)
- Repeater : groupes imbriqués répétables.
- Flexible Content : sections prédéfinies dans n’importe quel ordre.
- Gallery : images multiples.
- Clone : réutiliser des field groups.
- Options Pages : réglages globaux du site.
- ACF Blocks : blocs Gutenberg en PHP avec champs ACF.
Utiliser ACF
- Installez ACF/SCF ou téléchargez ACF Pro.
- Custom Fields, Add New, nommez le field group.
- Ajoutez Text subtitle, Number price, Image hero_image, Repeater faqs.
- Location : post type égal à product.
- Publiez.
<?php
$subtitle = get_field( 'subtitle' );
$price = get_field( 'price' );
$hero = get_field( 'hero_image' );
?>Le fork ACF/SCF (octobre 2024)
Le 27.09.2024 un différend public a éclaté entre WordPress.org et WP Engine. Le 10.10.2024 Matt Mullenweg a retiré ACF du répertoire et l’a remplacé par Secure Custom Fields (SCF). Les sites avec mises à jour automatiques ont reçu SCF. ACF Pro n’a pas été affecté et reste vendu sur advancedcustomfields.com.
Alternatives à ACF
| Plugin | Installations actives | Atouts |
|---|---|---|
| ACF | 2 millions+ | UI soignée, ACF Pro |
| SCF | 1 million+ | gratuit, remplacement direct |
| Meta Box | 400.000+ | code first, rapide |
| CMB2 | 300.000+ | bibliothèque développeur |
| Pods | 100.000+ | CPTs + champs + tables |
Custom fields et API REST
register_post_meta()avecshow_in_rest => trueexpose le champ sous meta sur /wp-json/wp/v2/<post-type>/<id>.- ACF Pro ajoute le support REST automatiquement sous la propriété acf.
- WPGraphQL for ACF ajoute les field groups au schéma GraphQL.
Performance
- get_post_meta() sans arguments charge TOUS les meta du post et les met en cache.
- Les requêtes par meta_key sont lentes à l’échelle (pas d’index). +50.000 articles : table dédiée ou ElasticPress.
- Désactivez le dropdown natif avec
add_filter( 'postmeta_form_keys', '__return_false' ). - ACF stocke une clé de référence pour chaque champ (_subtitle avec field_64ab123) ce qui double les lignes mais assure la cohérence.
Patterns courants
- Options globales via ACF Options Pages.
- Page builder sans builder via Flexible Content.
- Articles liés (Post Object, Relationship).
- Sections réutilisables (Clone).
- Champs conditionnels.
Ce que vérifie InspectWP
InspectWP détecte ACF, SCF et les plugins similaires en analysant les scripts chargés, les classes body et les endpoints REST API. Le rapport identifie les setups headless qui consomment l’extension REST d’ACF et signale les meta exposés qui pourraient fuiter des données internes.