« Tutoriels WordPress »

Réimporter les champs ACF exportés en PHP

Le 10 mars 2020 • 2 minutes • 7

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

7

Commentaires

  1. 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.

  2. 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.

  3. Jérémie

    Le 4 octobre 2021

    Bonjour,

    Suite à plusieurs développeurs qui ont travaillé sur le site je me retrouve exactement avec ce soucis.

    Serait il possible de voir ensemble comment nous aider à résoudre ce soucis ?

    1. Maxime BJ

      Le 5 octobre 2021

      Bonjour Jérémie, en appliquant ce tutoriel tu devrais pouvoir générer à nouveau tes fichiers de configuration, qu’il faudra ensuite importer dans ACF.

  4. Thomas Villain

    Le 21 septembre 2022

    Salut Maxime,
    J’espère que tu vas bien 🙂
    J’ai essayé cette méthode mais je n’ai aucun fichier json de créé dans le répertoire acf-json 🙁
    C’est bien à la racine du thème qu’il faut le mettre ? je visite les pages mais rien ne se passe… il ne manque pas un truc dans la fonction ?

    1. Maxime BJ

      Le 21 septembre 2022

      Je pense qu’il va générer les fichiers lorsque tu modifies l’un des groupes de champs. Essaie d’en mettre un à jour, sans même rien changer, et tu devrais les voir apparaitre !

  5. Thomas Villain

    Le 21 septembre 2022

    Je viens de créer un groupe de champs test et son json est bien généré… mais pas les json de mes fichiers d’export php :/

    1. Maxime BJ

      Le 21 septembre 2022

      Ah oui normal : une fois que c’est généré en PHP ça n’existe plus dans ACF. Ce n’est donc plus exportable. Tu as réussi à les réimporter depuis PHP en suivant mon tuto ? Il faut d’abord qu’ils réapparaissent dans l’interface d’ACF, puis supprimer les fichiers PHP (sinon ils sont prioritaires sur les champs en base).

  6. Thomas Villain

    Le 21 septembre 2022

    Oui j’ai suivi le tuto, j’ai placé mes fichiers php dans acf-json et lancé la fonction en visitant des pages du site mais mes fichiers php n’ont pas générés de fichiers json… c’était bien ça la manip ?

    1. Maxime BJ

      Le 21 septembre 2022

      Oui exact, je pensais que tu étais à l’étape suivante pardon. Du coup ça aurait dû marcher en effet. Bizarre ! Je ne vois pas de quoi ça peut venir. Pas d’erreur PHP dans les logs ?

  7. Thomas Villain

    Le 21 septembre 2022

    Non, pas d’erreur…
    Entre temps j’ai trouvé ce plugin qui a bien fonctionné !
    https://gist.github.com/ollietreend/df32c5cbe2914f6fc407332bf6cbfca5
    Il utilise plus ou moins les mêmes fonctions.
    Merci pour ta réactivité ^^

Laisser un commentaire