Categorieën bekijken

Werken met acf-json

2 min leestijd

Bij het aanmaken van ACF-velden via de interface, worden deze in de database van het lokale systeem opgeslagen. Vaak wordt er gewerkt met meerdere omgevingen (wat in de regel wel het geval is) zoals lokaal, test, staging en live. Het is dan onhandig, tijdrovend en foutgevoelig om overal diezelfde velden aan te moeten maken.

Een oplossing daarvoor is het registreren van ACF-velden via PHP, of het gebruik van acf-json-bestanden. We gaan nu uit van het laatste, omdat dit voor de snelheid van de site het beste is.

Als je in je thema-map een map genaamd ‘acf-json’ aanmaakt, zal deze na het opslaan van de velden (via de interface) automatisch worden voorzien van een nieuw .json-bestand. Dat bestand kan je dan via een GIT-commit verspreiden naar andere omgevingen.

Volgorde van belangrijkheid
ACF hanteert de volgende ‘volgorde’ van belangrijkheid:

ACF (velden toevoegen)Invoerpagina’s (post-type, taxonomy, etc.)
databaseacf-json
acf-jsondatabase

Zoals je kan zien is bij het beheer-gedeelte van ACF-velden de database leidend. Om deze reden maken we in het Starter Template het beheer-gedeelte van ACF op alle omgevingen die niet met ‘.local’ eindigen onzichtbaar. Op deze manier proberen we fouten te voorkomen. Het probleem is namelijk dat de acf-json-bestanden overschreven kunnen worden met oude data.

Meerdere ontwikkelaars
Om bovenstaande reden is het over het algemeen het best als één persoon de acf-json-bestanden aanmaakt. Maar dat is niet altijd de realiteit. Als er meerdere personen aan de velden werken, is het heel voornaam dat de acf-json-bestanden snel in een commit worden geplaatst en dat je voor het aanmaken van nieuwe velden controleert of er op GIT nog updates voor zijn. Als die er zijn haal je ze binnen en moet je ze in ACF synchroniseren.

Als twee ontwikkelaars tussen commits allebei aan ACF-velden hebben gewerkt, kan het zijn dat er een merge-conflict ontstaat bij het committen van de acf-json bestanden. In dat geval moeten (in principe) alle wijzigingen overgenomen worden. De waarde voor ‘modified’ moet de ‘hoogste’ zijn om ervoor te zorgen dat de optie om te synchroniseren altijd zichtbaar zal zijn.

Zie ook: How to avoid conflicts when using the ACF Local JSON feature

Mogelijk gemaakt door BetterDocs