---
title: "WordPress plugin"
icon: "puzzle"
visibility: "public"
---

De **Vakgarage Occasions Plugin** is een WordPress plugin waarmee je de occasions-voorraad van jouw garage direct op je eigen WordPress website toont. Na installatie en configuratie worden de occasions automatisch opgehaald en weergegeven.

---

## Downloaden

Download de plugin als zip-bestand en installeer deze via het WordPress dashboard onder **Plugins > Nieuwe plugin > Plugin uploaden**:

[Download de plugin hier](/vakgarage-occasions-plugin.zip)

---

## Vereisten

Je hebt een **API key** nodig om de plugin te koppelen aan de Vakgarage API. Neem contact op met Problicity om een API key aan te vragen:

- **E-mail:** charneal@problicity.nl
- **Telefoon:** 050 879 5403

---

## Caching

De response wordt **20 minuten gecacht**. Dit verbetert de laadtijd van WordPress-pagina's aanzienlijk. Ververs de cache niet bij elk pageview, gebruik de gecachte response. De cache wordt automatisch geleegd wanneer de gegevens opnieuw worden opgeslagen.

---

## Configuratie

Na installatie verschijnt **Vakgarage** in het WordPress dashboard. Ga naar dit menu om:

- Je **API key** in te voeren
- De **weergave** van de occasionslijst aan te passen

De volledige plugin documentatie is ook beschikbaar vanuit het WordPress dashboard onder **Vakgarage > Documentatie**.

---

## Shortcode

Gebruik de onderstaande shortcode op elke pagina of post om de occasionslijst te tonen:

```
[vakgarage_stocklist]
```

### Parameters

| Parameter | Waarde | Standaard | Omschrijving |
|---|---|---|---|
| `grid` | 1 - 4 | 4 | Aantal kolommen in het grid |
| `filterui` | true / false | false | Toon de filterbalk boven de occasions |
| `sortfield` | `price`, `build_year`, `mileage`, `brand`, `model`, `brand_model` | | Veld waarop gesorteerd wordt |
| `sortorder` | ASC / DESC | ASC | Sorteerrichting (oplopend of aflopend) |
| `defaultfilters` | JSON-array | | Vaste filters die altijd worden toegepast, los van de filterbalk |

### Voorbeelden

3 kolommen, gesorteerd op prijs (laag naar hoog):
```
[vakgarage_stocklist grid="3" sortfield="price" sortorder="ASC"]
```

Met filterbalk, gesorteerd op merk en model:
```
[vakgarage_stocklist filterui="true" sortfield="brand_model" sortorder="ASC"]
```

Alleen elektrische occasions:
```
[vakgarage_stocklist defaultfilters='[{"field":"fuel_type","operator":"==","value":"Elektrisch"}]']
```

Alleen occasions t/m €25.000:
```
[vakgarage_stocklist defaultfilters='[{"field":"price","operator":"<=","value":"25000"}]']
```

Meerdere filters combineren:
```
[vakgarage_stocklist defaultfilters='[{"field":"fuel_type","operator":"==","value":"Elektrisch"},{"field":"price","operator":"<=","value":"40000"}]']
```

### Filtervelden

| Veld | Type | Voorbeeld |
|---|---|---|
| `brand` | tekst | Volkswagen |
| `model` | tekst | Golf |
| `fuel_type` | tekst | Benzine, Elektrisch |
| `transmission` | tekst | Automaat, Handgeschakeld |
| `price` | getal | 25000 |
| `mileage` | getal | 50000 |
| `build_year` | getal | 2020 |

### Operatoren

| Operator | Betekenis |
|---|---|
| `==` | Gelijk aan |
| `!=` | Niet gelijk aan |
| `<=` | Kleiner dan of gelijk aan |
| `>=` | Groter dan of gelijk aan |
| `<` | Kleiner dan |
| `>` | Groter dan |

---

## Het endpoint erachter

De plugin praat met één endpoint. Bouw je een eigen integratie in plaats van de plugin te gebruiken, dan kun je datzelfde endpoint aanroepen.

```
GET /api/wordpress-plugin/occasions
```

De volledige responsestructuur staat in de [API-referentie](/api/vakgarage).

### Authenticatie

Dit endpoint werkt met een **API key in de header**, zonder bearer token:

```
X-API-KEY: <jouw api key>
```

### Alleen een vestigingssleutel

De sleutel moet van het type `establishment` zijn — hij hoort bij één garage, en het endpoint levert de voorraad van die garage. Een `global` sleutel wordt geweigerd:

```
HTTP 403 Forbidden
```

```json
{
  "message": "Access denied. Only establishment API keys have access to this endpoint."
}
```

### Zonder voertuigkoppeling

Heeft de vestiging geen voertuigkoppeling ingesteld, dan krijg je:

```
HTTP 400 Bad Request
```

```json
{
  "message": "Establishment heeft geen voertuig-integratie ingesteld."
}
```

Zie [Client types](/apiportaal/api/client-types) voor het verschil tussen de sleuteltypes.
