« Tutoriels WordPress »

Réimporter les champs ACF exportés en PHP

Le 10 mars 2020 • 2 minutes • 2

Si comme moi vous aviez un jour exporté vos champs ACF en PHP, et que vous n’avez plus la possibilité de les modifier, voici un script qui va vous aider !

Le souci lorsque l’on exporte ses champs ACF en PHP

ACF Propose une fonction pour exporter des groupes de champs en PHP, de cette manière ils n’apparaissent plus dans l’interface d’ACF et ne sont plus directement modifiables (par un client notamment).

L'interface permettant d'exporter les champs ACF en PHP
L’interface permettant d’exporter les champs ACF en PHP

J’avais tenté cette méthode sur l’un de mes sites, mais voilà le souci : à force, j’ai perdu mes champs ACF en local, et ils n’existaient plus qu’en PHP. Et un jour j’ai eu besoin de modifier des réglages, sans pouvoir le faire.

Mais heureusement, un simple script va nous permettre de régler ce problème !

De PHP vers ACF : réimporter ses champs

Pour retrouver nos champs, on va les convertir de PHP vers JSON, afin de les réimporter via l’interface d’ACF.

Commencez par créer un dossier acf-json à la racine de votre thème. C’est dans ce dossier qu’iront les groupes de champs exportés

Placez ensuite ce code dans le functions.php de votre thème, et exécutez le une fois (en chargeant n’importe quelle page dus site).

PHP
functions.php

Vous devriez voir des fichiers JSON dans le dossier que l’on vient de créer. Si c’est le cas, vous pourrez supprimer ce code : il ne nous servira plus.

Allez dans WordPress > ACF > Outils puis importez les fichiers JSON les uns après les autres via le bloc de droite :

Utilisez le bloc de droite pour importer les groupes de champs JSON
Utilisez le bloc de droite pour importer les groupes de champs JSON

De retour sur ACF > Groupes de champs vous devriez retrouver vos groupes.

Les groupes de champs sont à nouveau administrables !
Les groupes de champs sont à nouveau administrables !

Vous allez pouvoir les administrer à nouveau en modifiant les paramètres, en ajoutant des champs…

L’autre solution : Exporter les champs en JSON

La solution la plus viable sur le long terme est en fait d’exporter vos champs en JSON. Et pour cela c’est très facile car il suffit d’un hook.

PHP
functions.php

L’avantage c’est qu’ACF exporte automatiquement la version JSON de vos champs, du coup vous allez même pouvoir versionner ces fichiers avec Git.

Si vous créez un nouveau groupe de champ en local, ou que vous en modifiez un, les informations seront mises à jour dans le fichier. Comme il est versionné, il finira en ligne lorsque vous déploierez votre thème.

Une fois en ligne, ACF vous informera qu’il y a des synchronisations disponibles :

Le groupe Page d'options a une mise à jour disponible
On peut voir que le groupe « Page d’options » a une mise à jour disponible

Cliquez sur le filtre Synchronisation disponible puis Synchroniser pour mettre à jour vos groupes vers la version la plus récente !

C’est donc vraiment une meilleure approche selon moi que l’export PHP. On conserve un contrôle sur les champs tout au long du process.

Si vous voulez maitriser ACF, j’ai une mini-formation qui vous permettra de devenir un véritable expert d’ACF, en toute simplicité !

Découvrir la formation ACF

L'auteur : Maxime BJ

https://capitainewp.io@maximebj

Développeur et consultant WordPress depuis plus de 10 ans, j'ai fondé Capitaine WP et WPChef

2

Commentaires

  1. Bahuaud

    Le 26 mars 2020

    Personnellement j’avoue pencher d’avantage pour la version php… car cela me permet d’aller plus loin dans l’affichage conditionnel des différents champs (la configuration des champs devient juste un gros tableau PHP, on peut donc y faire ce que l’on veut).

    Par exemple pour des champs de type option, je peux boucler sur les langues du site pour automatiquement préfixer mes champs par le code lang et donc gérer des variation d’options.

    En fait cela me parait plus pratique de composer en PHP qu’avec l’interface 🙂
    Après c’est une question de préférence.

    1. Maxime BJ

      Le 26 mars 2020

      L’interface peut s’avérer lourde à un moment en effet. Je pense qu’il faut juste prendre l’habitude de lire la configuration PHP. Merci pour ton retour, c’est très intéressant de savoir comment chacun fait.

  2. Timothée Moulin

    Le 11 mars 2020

    Hello Maxime,
    Personnellement, j’aime bien enregistrer mes groupes ACF avec la méthode PHP car cela permet d’utiliser automatiquement la dernière version sans avoir à synchroniser manuellement le groupe (à moins qu’on ne puisse déclencher ça automatiquement quelque part). De plus, le dossier d’export des fichiers JSON ne peut se trouver qu’à un seul endroit (même si plusieurs sources peuvent être déclarées dans différents plugins par exemple). Finalement, ça permet d’avoir une configuration des groupes plus flexible selon moi en ajoutant des hooks et autres fonctions et rendre ainsi l’enregistrement du groupe plus dynamique.
    Une opinion à ce sujet?
    Merci pour ton article 😉
    Timothée

    1. Maxime BJ

      Le 11 mars 2020

      Ca dépend des besoins en effet. Moi ce qui m’a géné c’est le fait de ne plus avoir accès à l’administration de ces champs. La mise à jour manuelle je la fais juste avant d’importer une nouvelle version de mon thème par exemple, ça me permet de préparer les nouveaux contenus en avance. Comme ça, quand j’importe la nouvelle version du thème, les champs et contenus sont déjà là et prêts.

Laisser un commentaire