WP Manifestindependent plugin directory
manifest / seo / theseo-lokaal-schema

Dutch Local Business Schema, KVK and VAT

LocalBusiness-structuurdata met KVK-nummer, btw-identificatienummer en iDEAL, plus een controle of naam, adres en telefoon overal gelijk zijn. Gratis GPL-plugin van theseo.nl.

by TheSEO · github.com/gianlucanaarden/theseo-lokaal-schema · website

0stars
1release downloads
0forks

Install

The author publishes release zips, so WP-CLI can install straight from GitHub:

wp plugin install https://github.com/gianlucanaarden/theseo-lokaal-schema/releases/download/v1.0.0/theseo-lokaal-schema-1.0.0.zip

Readme

Dutch Local Business Schema, KVK and VAT

Volledige LocalBusiness-structuurdata met de velden die een Nederlands bedrijf werkelijk heeft, plus een controle of je naam, adres en telefoonnummer overal op je site hetzelfde zijn. Gebouwd door TheSEO en hier open source beschikbaar onder GPLv2.

Structuurdata voor lokale bedrijven is niet nieuw. Structuurdata die weet dat een Nederlands bedrijf een KvK-nummer heeft, een btw-identificatienummer, en klanten die met iDEAL betalen, is dat wel.

Downloaden en installeren

git clone https://github.com/GianlucaNaarden/theseo-lokaal-schema.git
cp -r theseo-lokaal-schema /pad/naar/wp-content/plugins/

Daarna: activeren en naar Instellingen, Lokaal bedrijf. Zodra de naam, de straat, de postcode en de plaats zijn ingevuld staat de structuurdata op de voorpagina.

Eisen: WordPress 6.0 of nieuwer, PHP 7.4 of nieuwer.

Wat er in de structuurdata komt

Veld Waar het terechtkomt
Bedrijfsnaam name
Statutaire naam legalName
Rechtsvorm additionalProperty met de naam Rechtsvorm
KvK-nummer identifier als PropertyValue met propertyID KVK
Btw-identificatienummer vatID
Straat, postcode, plaats, land address als PostalAddress
Telefoon en e-mail telephone en email
Coordinaten geo als GeoCoordinates, alleen als je er twee invult
Prijsklasse priceRange
Openingstijden openingHoursSpecification, maximaal drie blokken per dag
Afwijkende dagen openingHoursSpecification met validFrom en validThrough
Verzorgingsgebied areaServed, als City of als tekst bij een postcodegebied
Betaalmethoden paymentAccepted

Lege velden gaan er niet in. Structuurdata met een leeg veld erin is slechter dan structuurdata zonder dat veld.

De 39 keuzes bij Soort bedrijf zijn stuk voor stuk een echt subtype van LocalBusiness in de woordenlijst van schema.org. Er is geen verzonnen type bij.

De consistentiecontrole

Dit is het saaiste en nuttigste deel van lokale SEO, en in de hele pluginmap zat er niets voor. Hij leest je gepubliceerde items, de tekst van je widgets en je menu's en vergelijkt:

  • elk telefoonnummer dat begint met 0, +31 of 0031 en negen tot elf cijfers heeft
  • elke postcode geschreven als vier cijfers en twee hoofdletters
  • elke schrijfwijze van je bedrijfsnaam die niet letter voor letter klopt met wat je hebt ingevuld

Wat eruit komt is een lijst afwijkingen met een link naar de plek waar hij staat. De plugin verandert nooit iets aan je inhoud. Een lang ordernummer kan als verkeerde treffer in de lijst komen; dat staat er ook bij op het scherm.

De uitkomst gaat in een transient met een houdbaarheid van een uur, want het is een momentopname en geen archief. Bij het opslaan van de bedrijfsgegevens vervalt hij meteen.

Twee plugins die hetzelfde publiceren is erger dan een

Staat Yoast Local SEO aan, of Rank Math met een ingesteld lokaal bedrijfstype, dan zwijgt deze plugin en zegt hij op het scherm welke hij heeft gevonden. Die controle staat standaard aan en is uit te zetten.

Alleen signalen die echt te meten zijn worden gebruikt:

  • WPSEO_LOCAL_VERSION, WPSEO_LOCAL_FILE of de klasse WPSEO_Local_Core voor Yoast Local SEO
  • rank-math-options-titles met een gevulde local_business_type en knowledgegraph_type op company voor Rank Math

Andere opstellingen worden niet herkend, en dat staat er eerlijk bij in plaats van dat er wordt gegokt.

Twee filters voor ontwikkelaars:

// Toch publiceren, ook als er iets herkend is.
add_filter( 'theseo_lokaal_schema_conflict', '__return_empty_array' );

// Een eigen veld aan de knoop toevoegen.
add_filter( 'theseo_lokaal_schema_node', function ( $node ) {
    $node['slogan'] = 'Altijd binnen een dag op de stoep';
    return $node;
} );

Wat er wordt opgeslagen en wat er naar buiten gaat

Alles wat je invult staat in een enkele optierij in wp_options. Er gaat geen enkel verzoek naar buiten: geen account, geen sleutel, geen aanroep van een register, geen tracking. Het KvK-nummer en het btw-nummer worden alleen op vorm gecontroleerd, door een reguliere expressie in de plugin zelf.

Verwijderen van de plugin haalt de optie en de transient weg. Deactiveren laat ze staan.

Feestdagen zonder extensie

De knop die de Nederlandse feestdagen als gesloten dag toevoegt rekent Pasen zelf uit met het anonieme gregoriaanse algoritme, in plaats van te leunen op de calendar-extensie van PHP die niet op elke server staat. Koningsdag schuift naar de zaterdag ervoor wanneer 27 april op een zondag valt, zoals de wet het zegt.

Dat is getoetst tegen de echte data van 2024 tot en met 2028, plus de verschuiving van Koningsdag in 2025.

Opbouw

theseo-lokaal-schema.php               bootstrap, constanten, PHP-versiecontrole
includes/class-tsls-settings.php       opslag, standaarden, validatie, feestdagen
includes/class-tsls-schema.php         de JSON-LD, de dubbeldetectie en de uitvoer
includes/class-tsls-consistency.php    de NAP-controle over inhoud, widgets en menu's
includes/class-tsls-admin.php          de vijf tabbladen
includes/class-tsls-plugin.php         alle hooks op een plek
uninstall.php                          opruimen bij verwijderen

Beveiliging

Nonce bij elke schrijfactie, manage_options bij elke handeling, ABSPATH-controle bovenaan elk bestand, alle uitvoer ontsnapt, en de enige directe databasequery draait via $wpdb->prepare met een placeholder per berichttype. De JSON-LD wordt met wp_json_encode gebouwd en de slashes blijven bewust ontsnapt.

Licentie

GPLv2 of later, zie LICENSE.

Read the full README on GitHub →

Releases

TagPublishedAssetDownloads
v1.0.0 Aug 19, 2026 theseo-lokaal-schema-1.0.0.zip 1