Gravity Forms komt met enkele krachtige methodes om dynamisch bepaalde velden te voorzien van data. In deze demo maken we gebruik van de betalende plugin Gravity Wiz en de perk “Populate Anything”.
De uitdaging
Een gamewinkel heeft een custom post type “games” met als custom taxonomy “platform”. Zo hebben ze bijvoorbeeld een post “Resident Evil 4” met als platform “Windows”, “PlayStation 5” en “Xbox Series X|S”. Voor elke game willen ze op de frontend een eigen pagina (zoals https://gameshop.be/game/resident-evil-4). Op die pagina staat een formulier waarbij de gebruiker een game kan reserveren. In een dropdown kunnen ze een platform selecteren en het formulier verzenden. De keuzes in de dropdown “Platform” moeten dynamisch worden ingevuld op basis van de taxonomy terms van de huidige post.
Met andere woorden: op de pagina van Resident Evil 4 mag de dropdown met platformen enkel “Windows”, “PlayStation 5” en “Xbox Series X|S” bevatten en niet “Nintendo Switch”.

Opzet
Voor deze demo heb ik een nieuwe WordPress installatie opgezet. Vervolgens heb ik een Custom Post Type gemaakt genaamd ‘Games’. Ook heb ik een custom taxonomy gemaakt genaamd ‘platformen’.
Ook heb ik Gravity Forms geactiveerd alsook Gravity Wiz, waar ik ook meteen de perk “Populate Anything” heb geactiveerd.
Voor het custom post type heb ik een template gemaakt (single-game.php). Dit zorgt ervoor dat dit bestand automatisch wordt ingeladen wanneer iemand de detailpagina van een game bezoekt. Ik heb een Gravity Form aangemaakt en met onderstaande regel code zorg ik ervoor dat het formulier wordt ingeladen op de pagina:
gravity_form( $id_or_title, $display_title = true, $display_description = true, $display_inactive = false, $field_values = null, $ajax = false, $tabindex, $echo = true );
De oplossing
Open het Gravity Form formulier, in mijn geval is dat het formulier “Reserveer een game”.
Voeg een dropdown toe aan het formulier. Deze dropdown zal een keuzelijst bevatten van alle platformen waarop de game beschikbaar is. Ter herinnering: de beschikbare platformen voor een game voegen we toe aan de hand van een custom taxonomy.
Om deze dropdown te vullen met de waarden van taxonomy ‘Platform’, kiezen we voor de Gravity Perks optie “Populate choices dynamically”. Bij “Type” kiezen we voor “Taxonomy Term”. Klik vervolgens op “Add Filter Group” en maak een filter aan waarbij de Taxonomy gelijk is aan de gewenste taxonomy (in mijn geval: “Platform”).
Scrol wat naar beneden en bij “Choice Template” kies je als Value voor “Term ID” en voor Label “Name”.

Wanneer we nu naar een game pagina gaan, zien we inderdaad een dropdown met daar alle taxonomy terms. Close, but not close enough. Resident Evil 4 is bijvoorbeeld niet beschikbaar op Switch, maar toch kan die waarde worden gekozen. We gaan dus een extra filter toevoegen die ervoor zorgt dat we enkel taxonomy terms te zien krijgen die werden aangeduid bij de huidige post.
Klik onder je eerste filter op het plusje en kies voor: Object ID is Current Post ID.

Wanneer we nu terug naar de game pagina gaan en we herladen het formulier, dan zien we inderdaad dat we enkel de platformen PlayStation 5, Windows en Xbox Series X|S te zien krijgen. Precies wat we willen!

Laat een reactie achter