Aller au contenu

ACF (Advanced Custom Fields) : le top pour ajouter des champs personnalisés et des objets à WordPress

Le plugin WordPress "Advanced Custom Fields", souvent abrégé en ACF, est un des plugins les plus connus de l'écosystème WordPress.

Advanced Custom Fields veut dire : Champs Personnalisés Avancés.

Cette extension vous permet d'ajouter et de gérer des nouveaux champs personnalisés n'importe où dans WordPress, et de créer des blocs personnalisés.

En effet, un des avantages de WordPress est sa flexibilité, qui lui permet de répondre à de nombreux types de projets, en permettant de créer des Custom Content Type (types de contenus personnalisés), comme des Custom Post Type (types d'objets personnalisés), de nouvelles taxonomies, ou des champs personnalisés.

Qu'est-ce qu'un champ personnalisé ?

Ces champs personnalisés permettent d'ajouter des informations supplémentaires dans des contenus WordPress, comme le champs "Prix" pour un produit WooCommerce, ou le champ "Heure de l'événement" pour un événement.

Exemple de champs que vous voudriez ajouter à votre site :

  • Ajouter un champ "Notes internes" à les pages WordPress, dans lequel vous écrivez des notes que seuls vous et les admins peuvent voir

  • Ajouter un champ "Numéro de page du catalogue" à des articles d'une catégorie spécifique qui liste des pages de catalogue

  • Ajouter un champ "Identifiant de commande interne" à un produit WooCommerce pour aider à la gestion des commandes dans une entreprise

  • Ajouter un champ "Image secondaire" aux pages ou articles

Les champs personnalisés dans WordPress

WordPress offre nativement une fonctionnalité pour gérer des champs personnalisés, mais elle est peu utilisée et pas très pratique. Le plugin ACF la remplace avantageusement.

ACF compte plus de 2 millions d'installations actives et appartient à WP Engine (octobre 2026). À savoir : en octobre 2024, pendant le conflit entre Automattic et WP Engine, wordpress.org a remplacé la fiche d'ACF par une copie appelée Secure Custom Fields ; la fiche officielle est de nouveau publiée et mise à jour par WP Engine.

ACF version Pro

ACF existe en version gratuite, et pourra satisfaire à la plupart des utilisations. Ils proposent aussi une version pro, qui ajoute entre autres :

  • Un type de champ "Répéteur" qui permet de créer un ensemble de sous-champs qui peuvent être répétés indéfiniment

  • Des blocs ACF avec un puissant framework basé sur PHP pour développer des types de blocs personnalisés

  • Un champ de contenu flexible qui est un gestionnaire complet de mise en page de contenu

  • Un système d'options de page qui fournit un ensemble de fonctions pour ajouter des pages d'administration supplémentaires afin d'éditer les champs ACF

  • Un champ Galerie qui fournit une interface simple et intuitive pour gérer une collection d'images.

  • Un champ Clone qui permet de réutiliser des champs et des groupes de champs existants à la demande

prix du plugin WordPress ACF en fév. 2024

Extensions pour ACF

ACF propose une 30aine de champs. Des utilisateurs ont créé des champs supplémentaires à découvrir sur awesomeacf.com.

Appliquer les valeurs par défaut d'un champ personnalisé à tous les articles ou toutes les pages

Lorsqu'on créé un champ personnalisé (custom field) dans ACF, sa valeur par défaut ne sera appliqué aux articles/pages/objets existants seulement en ouvrant chaque page et en enregistrant les modifications (même si vous n'avez rien modifié).

Selon cette discussion, il s'agit d'un nouveau champ qui n'a jamais été mis à jour ou implémenté dans les pages qui existaient avant la création de ce champ, et la clé de référence ACF de ce champ n'existe pas encore dans la base de données. Solutions :

  • La solution fastidieuse est d'ouvrir en édition toutes les pages concernées, puis de sauvegarder.

  • Utiliser la clé du champ (field_xxxxxx) plutôt que le nom du champ (n'a pas marché pour moi).

  • Si vos templates sont en PHP, prévoir dans votre code que valeur inexistante est similaire à valeur par défaut

  • Faire un code PHP qui va boucler sur toutes les pages concernées pour lui appliquer la valeur par défaut, démo ci-dessous

A vos risques et périls, si vous savez ce que vous faîtes, un code qui résout le problème en quelques secondes, à ne lancer qu'une fois puis le supprimer/le commenter :

PHP

PHP24 lignes
// fonction trouvée sur ideoforge.com, à utiliser à vos risques et périls
// remplacez le post_type par celui adéquat, ainsi que les 2 occurences de NOM_CHAMP, et celle de VALEUR
add_action('admin_init', 'set_default_acf_values');

function set_default_acf_values() {

    $args = [
        'post_type'      => 'page', //post, page ...
        'posts_per_page' => -1,
    ];

    $posts = get_posts($args);

    foreach($posts as $post) {
        // pour enregistrer la valeur par défaut dans toutes les pages
        if (empty(get_field('NOM_CHAMP', $post->ID))) {
             update_field('NOM_CHAMP', 'VALEUR', $post->ID);
        }
       // variante utile : pour mettre à jour la valeur dans les pages enfants de la page ID 757
       // if ($post->post_parent == 757) {
    	 //       update_field('NOM_CHAMP', 'VALEUR', $post->ID);	
    	 // }
    }
}

Comment avoir la barre d'outils complète dans les champs WYSIWYG ACF (Advanced Custom Field) WordPress

A une époque à laquelle WordPress utilisait encore le Classic Editor, les champs WYSIWYG n'affichaient pas la barre d'outils complète, et j'avais utilisé le code suivant pour ce faire :

PHP

PHP10 lignes
/**
 * Remove the Basic toolbar so that the Full toolbar appears in ACF wysiwyg fields.
 */
function remove_acf_wysiwyg_basic_toolbar( $toolbars ) {
	if ( isset( $toolbars['Basic'] ) && isset( $toolbars['Full'] ) ) {
		unset( $toolbars['Basic'] );
	}
	return $toolbars;
}
add_filter( 'acf/fields/wysiwyg/toolbars', 'km_remove_acf_wysiwyg_basic_toolbar' );

Dîtes en commentaire si ceci est toujours valide ou non, je le mettrais à jour ou le supprimerais le cas échéant.

Auteur : Jean-Noël Mathonnet

Commentaires

Pas encore de commentaire. Soyez le premier !

Laisser un commentaire

Lorsque vous achetez via des liens sur ce site, nous pouvons toucher une commission d'affiliation. + d'infos