{"id":62048,"date":"2025-03-03T09:56:55","date_gmt":"2025-03-03T08:56:55","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=62048&#038;preview=true&#038;preview_id=62048"},"modified":"2025-03-07T13:40:10","modified_gmt":"2025-03-07T12:40:10","slug":"wordpress-geolocatie","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/","title":{"rendered":"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers"},"content":{"rendered":"<p>Moderne webapplicaties vereisen een hoog niveau van intelligente, locatiebewuste functionaliteit. E-commerce platforms moeten bijvoorbeeld internationale verzendtarieven berekenen en sites met veel content moeten regiospecifiek nieuws leveren. Geolocatie kan statische WordPress sites veranderen in dynamische, gepersonaliseerde ervaringen. Het kan echter lastig zijn om deze functionaliteit te implementeren, vooral als je niet de juiste hostingprovider hebt.<\/p>\n<p>Deze uitgebreide gids onderzoekt hoe je krachtige geolocatiefeatures kunt implementeren in <a href=\"https:\/\/kinsta.com\/wordpress\">WordPress<\/a>. Er wordt ook speciale aandacht besteed aan de ingebouwde mogelijkheden van Kinsta die een aantal van de meest voorkomende problemen bij het toevoegen van geolocatie aan je site elimineren.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Geotargeting en geolocatie begrijpen<\/h2>\n<p>Bij locatiebewuste toepassingen staan twee termen centraal: geotargeting en geolocatie. Ze zijn verwant, maar dienen elk een ander doel in je WordPress toolbox:<\/p>\n<ul>\n<li>Geolocatie lokaliseert de locatie van je bezoekers.<\/li>\n<li>Geotargeting levert specifieke content of ervaringen op basis van die gegevens.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/netflix.com\" target=\"_blank\" rel=\"noopener noreferrer\">Netflix<\/a> demonstreert dit effectief: Als je naar het buitenland reist, bepaalt de streamingdienst je huidige land via geolocatie en past vervolgens je contentbibliotheek aan via geotargeting om te voldoen aan regionale licentieovereenkomsten. Deze combinatie zorgt voor een naadloze ervaring terwijl de internationale mediarechten worden nageleefd.<\/p>\n<figure id=\"attachment_190273\" aria-describedby=\"caption-attachment-190273\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190273 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/netflix-website.png\" alt=\"De startpagina van Netflix toont verschillende rijen met content, waaronder de secties Your Next Watch en New on Netflix tegen een donkere achtergrond. De bovenste banner vermeldt Alleen op Netflix met tekst die hun exclusieve originele programmering uitlegt. Meerdere miniaturen van shows en films worden weergegeven in een horizontaal scrollformaat.\" width=\"1200\" height=\"698\"><figcaption id=\"caption-attachment-190273\" class=\"wp-caption-text\">De website van Netflix.<\/figcaption><\/figure>\n<p>Er zijn twee primaire methoden om de locatie van de bezoeker te bepalen:<\/p>\n<ul>\n<li>Op IP gebaseerde locatiedetectie vertrouwt op databases die IP-adressen aan geografische regio&#8217;s koppelen. Het werkt universeel zonder toestemming van de gebruiker. De meeste server-side geolocatie-oplossingen gebruiken dit, inclusief de ingebouwde mogelijkheden van Kinsta.<\/li>\n<li>Op GPS gebaseerde detectie heeft toegang tot de locatiehardware van een apparaat via <a href=\"https:\/\/kinsta.com\/nl\/blog\/rest-api-vs-web-api\/\">browser-API&#8217;s<\/a>. Het biedt precieze co\u00f6rdinaten, maar vereist expliciete toestemming van de gebruiker. Het levert precieze co\u00f6rdinaten maar vereist expliciete toestemming van de gebruiker. Deze functionaliteit wordt gebruikt voor &#8220;Near Me&#8221; zoekopdrachten of weerapplicaties die een exacte plaatsbepaling nodig hebben.<\/li>\n<\/ul>\n<p>Geolocatie en geotargeting werken samen, maar binnen geolocatie zijn er meerdere technologie\u00ebn die kunnen werken voor een bepaalde use case. Geen van beide is &#8220;beter&#8221; dan de ander &#8211; er zijn voordelen die individuele aanpassingen overstijgen.<\/p>\n<h2>De business case voor geolocatie<\/h2>\n<p>Het implementeren van geolocatie voor een website kan tastbare voordelen opleveren voor zowel je bedrijf als je gebruikers. Ten eerste zorgt personalisatie voor meer betrokkenheid. Als je site <a href=\"https:\/\/www.epsilon.com\/us\/about-us\/pressroom\/new-epsilon-research-indicates-80-of-consumers-are-more-likely-to-make-a-purchase-when-brands-offer-personalized-experiences\" target=\"_blank\" rel=\"noopener noreferrer\">de ervaring kan personaliseren<\/a> voor elke gebruiker, zullen meer gebruikers zaken met je doen.<\/p>\n<p>Amazon is een voorbeeld van hoe je daar de vruchten van kunt plukken. De winkelsite van Amazon kan voor elk product verzendtijden tonen op basis van je locatie:<\/p>\n<figure id=\"attachment_190266\" aria-describedby=\"caption-attachment-190266\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190266 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/amazon-shipping-times.png\" alt=\"Een Amazon productpagina met een Amazon Essentials herenhorloge met gemakkelijk afleesbaar bandje. De pagina toont bezorgopties voor Albany 12208.\" width=\"1200\" height=\"750\"><figcaption id=\"caption-attachment-190266\" class=\"wp-caption-text\">Een productpagina van Amazon met de verzendtijden voor een horloge.<\/figcaption><\/figure>\n<p>Afhankelijk van je locatie kun je ook relevante tijden zien voor <a href=\"http:\/\/amazon.com\/prime\" target=\"_blank\" rel=\"noopener noreferrer\">Amazon Prime<\/a> evenementen, zoals sportwedstrijden:<\/p>\n<figure id=\"attachment_190267\" aria-describedby=\"caption-attachment-190267\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190267 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/amazon-website.png\" alt=\"Amazons winkelinterface voor de feestdagen heeft een felrode achtergrond met een Top 100+ last-minute cadeaus promotie. Onder de lay-out van meerdere winkelcategorie\u00ebn bevindt zich een centraal paneel dat een NFL-wedstrijd tussen de Broncos en Chargers met teamlogo's promoot.\" width=\"1200\" height=\"750\"><figcaption id=\"caption-attachment-190267\" class=\"wp-caption-text\">De Amazon startpagina met de lokale tijd voor een wedstrijd Broncos-Chargers.<\/figcaption><\/figure>\n<p>Je kunt dit overal op het web zien, bijvoorbeeld hoe weersites automatisch je lokale weersverwachting weergeven. Ongeacht de implementatie vermindert personalisatie de wrijving in de gebruikerservaring en kan het de conversie aanzienlijk verbeteren.<\/p>\n<p>Naleving van regelgeving is ook afhankelijk van locatiebewustzijn. De <a href=\"https:\/\/kinsta.com\/nl\/blog\/avg-gdpr-wordpress\/\">GDPR in Europa<\/a>, de <a href=\"https:\/\/kinsta.com\/nl\/blog\/voldoen-ccpa-wordpress\/\">CCPA in Californi\u00eb<\/a> en nog veel meer regio&#8217;s stellen specifieke eisen aan de verwerking van gebruikersgegevens. Een goede geolocatie-implementatie helpt je om voor elke bezoeker aan dergelijke eisen te voldoen.<\/p>\n<p>Tot slot wekt gelokaliseerde content vertrouwen. Onderzoek toont aan dat gebruikers vaker een aankoop afronden als de prijzen in hun lokale valuta worden weergegeven en de verzendinformatie duidelijk blijft. Uit een <a href=\"https:\/\/csa-research.com\/Blogs-Events\/CSA-in-the-Media\/Press-Releases\/Consumers-Prefer-their-Own-Language\" target=\"_blank\" rel=\"noopener noreferrer\">onderzoek van Common Sense Advisory<\/a> blijkt bijvoorbeeld dat driekwart van de consumenten de voorkeur geeft aan het kopen van producten in hun moedertaal.<\/p>\n<h2>Zo kun je geolocatie integreren met WordPress<\/h2>\n<p><a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-web-apps\/\">De flexibele architectuur van WordPress<\/a> betekent dat er meerdere benaderingen zijn als je locatiemogelijkheden aan je site wilt toevoegen. De keuze van de hosting van je website, het gebruik van plugins, de kennis van codering en nog veel meer zullen allemaal een rol spelen bij de aanpak van je voorkeur. Werken met de gegevens zelf kan echter op een paar manieren.<\/p>\n<h3>Werken met geografische gegevens in WordPress<\/h3>\n<p>Hoewel WordPress core veel fundamentele functionaliteit bevat, zit daar geen ingebouwde geolocatie bij. Er is niets binnen WordPress core dat locatiegegevens registreert, hoewel het wel op verschillende manieren ondersteuning biedt voor het opslaan en verwerken van locatiegegevens.<\/p>\n<h4>De WordPress database<\/h4>\n<p>De <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-database\/\">WordPress database<\/a> kan bijvoorbeeld co\u00f6rdinaten en locatiegegevens opslaan met behulp van aangepaste velden of speciale locatietabellen.<\/p>\n<p>Het kan ook locatiegebaseerde taxonomie\u00ebn verwerken. Dit werkt goed voor store locators of onroerend goeddiensten die een aangepaste locatiedatabase gebruiken. WordPress slaat echter standaard geen geolocatiegegevens op &#8211; het is wel zo dat de mogelijkheid er is om dat te doen.<\/p>\n<h4>De WordPress REST API<\/h4>\n<p>De <a href=\"https:\/\/kinsta.com\/nl\/blog\/wpgraphql-en-wp-rest-api\/\">WordPress REST API<\/a> ondersteunt ook het werken met geolocatiegegevens, hoewel er geen speciale endpoints zijn. Je zou <a href=\"https:\/\/kinsta.com\/nl\/blog\/wp-rest-api-custom-endpoint\/\">je eigen endpoint-extensies moeten maken<\/a> om locatie-bewuste applicaties te bouwen die communiceren met externe diensten of mobiele apps. Hier is een voorbeeld:<\/p>\n<pre><code class=\"language-php\">add_action('rest_api_init', function() {\n    \/\/ Create a custom namespace for your geolocation endpoints\nregister_rest_route('your-site-geo\/v1', '\/location', [\n        'methods' =&gt; 'GET',\n        'callback' =&gt; 'handle_location_request',\n        'permission_callback' =&gt; function() {\n            return true;\n        }\n    ]);\n});\n\nfunction handle_location_request($request) {\n    \/\/ Access geolocation data (example using Kinsta's implementation)\n    $location = [\n        'country' =&gt; $_SERVER['GEOIP_COUNTRY_CODE'] ?? null,\n        'city' =&gt; $_SERVER['GEOIP_CITY'] ?? null,\n        'latitude' =&gt; $_SERVER['GEOIP_LATITUDE'] ?? null,\n        'longitude' =&gt; $_SERVER['GEOIP_LONGITUDE'] ?? null\n    ];\n    \n    return new WP_REST_Response($location, 200);\n}<\/code><\/pre>\n<p>Dit maakt een nieuw endpoint aan op <code>\/wp-json\/your-site-geo\/v1\/location<\/code> dat locatiegegevens retourneert voor API consumers.<\/p>\n<p>De code gebruikt <code>your-site-geo<\/code> als een custom namespace. Je naamruimte moet specifiek zijn voor je behoeften om conflicten met andere plugins of aangepaste code te voorkomen. Het is verstandig om de WordPress namespace richtlijnen te volgen:<\/p>\n<ul>\n<li>Gebruik een vendor- of pakketspecifieke prefix om conflicten te voorkomen.<\/li>\n<li>Neem een versienummer op (zoals <code>v1<\/code>).<\/li>\n<li>Houd endpoints specifiek en gericht.<\/li>\n<\/ul>\n<p>Je kunt ook locatiegegevens registreren voor bestaande endpoints:<\/p>\n<pre><code class=\"language-php\">add_action('rest_api_init', function() {\n    register_rest_field('post', 'location_data', [\n        'get_callback' =&gt; function($post) {\n            return get_post_meta($post['id'], 'location_data', true);\n        },\n        'update_callback' =&gt; function($value, $post) {\n            update_post_meta($post-&gt;ID, 'location_data', $value);\n        },\n        'schema' =&gt; [\n            'type' =&gt; 'object',\n            'properties' =&gt; [\n                'latitude' =&gt; ['type' =&gt; 'number'],\n                'longitude' =&gt; ['type' =&gt; 'number'],\n                'country' =&gt; ['type' =&gt; 'string'],\n                'city' =&gt; ['type' =&gt; 'string']\n            ]\n        ]\n    ]);\n});<\/code><\/pre>\n<p>In veel gevallen zal de REST API het eerste punt zijn waar je naartoe gaat om geolocatiefunctionaliteit in te bouwen, wat betekent dat deze flexibiliteit een zegen zal zijn.<\/p>\n<h4>Custom berichttypen<\/h4>\n<p>Misschien gebruik je ook <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-custom-post-types\/\">custom berichttypen<\/a> in WordPress. Als dat zo is, dan kunnen de nieuwe inhoudstypen die je maakt locatiemetagegevens bevatten. Hierdoor kun je inhoud organiseren op basis van geografische informatie, zonder dat je complexe database-aanpassingen hoeft te doen.<\/p>\n<p>De eerste stap is om het berichttype te registreren bij WordPress:<\/p>\n<pre><code class=\"language-php\">register_post_type('store_location', [\n    'public' =&gt; true,\n    'label' =&gt; 'Store Locations',\n    'supports' =&gt; [\n        'title',\n        'editor',\n        'Custom-fields'  \/\/ Enables custom fields and meta\n    ]\n]);<\/code><\/pre>\n<p>Je moet ook een aangepaste metabox maken voor het opslaan van de co\u00f6rdinaten die je verzamelt, en de HTML daarvoor genereren:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nadd_action('add_meta_boxes', function() {\n    add_meta_box(\n        'store_location_coordinates',\n        'Store Coordinates',\n        'render_location_meta_box',\n        'Store_location'  \/\/ The post type where this meta box should appear\n    );\n});\n\nfunction render_location_meta_box($post) {\n    \/\/ Get existing coordinates if they exist\n    $latitude = get_post_meta($post-&gt;ID, 'latitude', true);\n    $longitude = get_post_meta($post-&gt;ID, 'longitude', true);    \n\n    \/\/ Output the form fields\n    ?&gt;\n    &lt;label&gt;Latitude:\n        &lt;input type=\"number\" \n               step=\"any\" \n               name=\"latitude\" \n               value=\"&lt;?php echo esc_attr($latitude); ?&gt;\"&gt;\n    &lt;\/label&gt;\n    &lt;label&gt;Longitude:\n        &lt;input type=\"number\" \n               step=\"any\" \n               name=\"longitude\" \n               value=\"&lt;?php echo esc_attr($longitude); ?&gt;\"&gt;\n    &lt;\/label&gt;\n    &lt;?php\n}<\/code><\/pre>\n<p>Het belangrijkste is om de locatiegegevens op te slaan zodra je het bericht publiceert of anderszins opslaat in WordPress:<\/p>\n<pre><code class=\"language-php\">add_action('save_post_store_location', function($post_id) {\n    \/\/ Verify if this is an autosave\n    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {\n        return;\n    }    \n\n    \/\/ Save latitude if it exists\n    if (isset($_POST['latitude'])) {\n        update_post_meta(\n            $post_id,\n            'latitude',\n            sanitize_text_field($_POST['latitude'])\n        );\n    }    \n\n    \/\/ Save longitude if it exists\n    if (isset($_POST['longitude'])) {\n        update_post_meta(\n            $post_id,\n            'longitude',\n            sanitize_text_field($_POST['longitude'])\n        );\n    }\n});<\/code><\/pre>\n<p>Het bouwen van een functie om locaties in de buurt op te halen kan verschillende vormen aannemen. Hier is een ruw voorbeeld van een functie die (in theorie) de lengte- en breedtegraad van een locatie ophaalt:<\/p>\n<pre><code class=\"language-php\">function get_nearby_locations($lat, $lng, $radius = 10) {\n    $locations = get_posts([\n        'post_type' =&gt; 'store_location',\n        'posts_per_page' =&gt; -1\n    ]);\n\n    $nearby = array_filter($locations, function($location) use ($lat, $lng, $radius) {\n        $store_lat = get_post_meta($location-&gt;ID, 'latitude', true);\n        $store_lng = get_post_meta($location-&gt;ID, 'longitude', true);\n\n        return calculate_distance($lat, $lng, $store_lat, $store_lng) &lt;= $radius;\n    });\n\n    return $nearby;\n}<\/code><\/pre>\n<p>Het gebruik van een van deze keuzes hangt af van je specifieke behoeften. Gebruik bijvoorbeeld aangepaste velden voor eenvoudige locatiemetagegevens of breid de REST API uit voor headless implementaties. Voor locatiegerichte inhoud kunnen aangepaste posttypes het beste zijn.<\/p>\n<h3>De pluginmethode voor geolocatie<\/h3>\n<p>WordPress ondersteunt plugins voor bijna alles, en er zijn ook talloze oplossingen om locatiebewustzijn aan je site toe te voegen. Bijvoorbeeld <a href=\"https:\/\/wordpress.org\/plugins\/if-so-geolocation\/\" target=\"_blank\" rel=\"noopener noreferrer\">If-So Geolocation<\/a> of <a href=\"https:\/\/wordpress.org\/plugins\/geoip-detect\/\" target=\"_blank\" rel=\"noopener noreferrer\">Geolocation IP Detection<\/a> hebben goede beoordelingen, regelmatige updates en gezonde ondersteuningssystemen:<\/p>\n<figure id=\"attachment_190269\" aria-describedby=\"caption-attachment-190269\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190269 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/geolocation-ip-detection.png\" alt=\"De headerafbeelding van de Geolocation IP Detection plugin van WordPress.org. Het toont een gele banner met een zwart pin\/locatie marker icoon. Er staat tekst onder in het zwart en een website URL (www.yellowtree.de).\" width=\"1200\" height=\"385\"><figcaption id=\"caption-attachment-190269\" class=\"wp-caption-text\">Het Geolocation IP Detection logo uit de WordPress Plugin Directory.<\/figcaption><\/figure>\n<p>Deze bieden veel typische feature binnen een eenvoudig pakket dat ook nog eens een vertrouwd format gebruikt. Plugins kunnen een aantal voordelen bieden wanneer je geolocatie moet implementeren:<\/p>\n<ul>\n<li>Je krijgt een snelle inzet en een snelle implementatie zonder dat je custom code nodig hebt.<\/li>\n<li>Je hebt geen onderhoud nodig, omdat dit iets is wat de ontwikkelaar van de plugin doet (samen met updates).<\/li>\n<li>Er is vaak ondersteuning en documentatie van de community om je te helpen als je die nodig hebt.<\/li>\n<\/ul>\n<p>Voor het soort ontwikkeling dat je wilt doen, is een plugin misschien niet de beste optie. Om te beginnen ben je voor je functionaliteit afhankelijk van de kwaliteit van die plugin. Als je je eigen WordPress producten aanbiedt, is dit misschien ook geen samenwerking die je zoekt. Elke plugin wordt geleverd met zijn eigen locatiedatabase-implementatie en de kwaliteit hiervan kan net zo vari\u00ebren als andere features.<\/p>\n<p>Plugins zijn uitstekend voor eindgebruikers of site-eigenaren die locatiebewustzijn moeten toevoegen aan een bestaande site. De kans op conflicten met andere plugins, de extra serverbelasting en de beperkte flexibiliteit voor aangepaste implementaties betekenen echter dat je misschien een robuustere optie wilt.<\/p>\n<h2>Real-world toepassingen van WordPress geolocatie<\/h2>\n<p>Je hoeft niet ver te zoeken om voorbeelden te vinden van WordPress producten die geolocatie gebruiken in hun codebase. WooCommerce heeft bijvoorbeeld ingebouwde geolocatie voor <a href=\"https:\/\/kinsta.com\/blog\/woocommerce-tax\/\">belastingberekeningen<\/a> en verzendregels.<\/p>\n<figure id=\"attachment_190275\" aria-describedby=\"caption-attachment-190275\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190275 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/woocommerce-geolocation.png\" alt=\"De WooCommerce instellingenpagina met opties voor locatie- en belastingconfiguratie. Er is een uitgebreid vervolgkeuzemenu voor de standaardklantlocatie, waarin vier opties worden weergegeven: Standaard geen locatie, Winkelland\/regio, Geolocatie en Geolocatie (met ondersteuning voor pagina caching). De pagina bevat ook instellingen voor verkooplocaties, verzendlocaties, belastingvrijgave en couponbeheer.\" width=\"1200\" height=\"532\"><figcaption id=\"caption-attachment-190275\" class=\"wp-caption-text\">De Geolocatie optie binnen WooCommerce.<\/figcaption><\/figure>\n<p>Het maakt gebruik van <a href=\"https:\/\/dev.maxmind.com\/geoip\/geoip2\/geolite2\/\" target=\"_blank\" rel=\"noopener noreferrer\">MaxMind&#8217;s GeoIP2 database<\/a> om automatisch clientlocaties te detecteren, wat helpt om nauwkeurige prijzen en leveringsopties te garanderen vanaf de eerste pagina die wordt geladen.<\/p>\n<p>Andere plugins bieden ook ondersteuning voor geolocatie. Een formulierplugin zoals <a href=\"https:\/\/www.gravityforms.com\/add-ons\/gravity-geolocation\/\" target=\"_blank\" rel=\"noopener noreferrer\">de Gravity Forms Geolocation add-on<\/a> is een typische toepassing. Hiermee kunnen gebruikers hun locatie invoeren in een formulier, waarna Gravity Forms een set co\u00f6rdinaten en andere relevante gegevens toewijst.<\/p>\n<p>Dit is vooral waardevol voor leadgeneratie en formulieren voor serviceaanvragen. Nog belangrijker is dat je de flexibiliteit hebt om de behoefte aan locatiebewustzijn aan te passen aan je specifieke usecase.<\/p>\n<h2>Het voordeel van Kinsta: ingebouwde geolocatiemogelijkheden<\/h2>\n<p>Als je een klant bent van Kinsta, heb je geen extravagante en onelegante oplossingen nodig voor het implementeren van geolocatie. Het <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta dashboard<\/a> ondersteunt robuuste locatiedetectie zonder de overhead van extra WordPress plugins.<\/p>\n<h3>Het geolocatiesysteem van Kinsta<\/h3>\n<p>Kinsta&#8217;s geolocatie-implementatie maakt gebruik van twee krachtige technologie\u00ebn:<\/p>\n<ul>\n<li>NGINX&#8217;s <a href=\"https:\/\/nginx.org\/en\/docs\/http\/ngx_http_geoip_module.html\" target=\"_blank\" rel=\"noopener noreferrer\">eigen geolocatiemodule<\/a> biedt effici\u00ebnte locatiedetectie op serverniveau.<\/li>\n<li>MaxMind&#8217;s GeoIP2 database zorgt voor nauwkeurige en up-to-date locatiekartering.<\/li>\n<\/ul>\n<p>Deze integratie binnen het MyKinsta dashboard biedt verschillende voordelen ten opzichte van een op plugin of code gebaseerde oplossing:<\/p>\n<ul>\n<li>Omdat de locatiedetectie op serverniveau gebeurt, is er een minimale impact op de prestaties in vergelijking met andere benaderingen.<\/li>\n<li>Kinsta onderhoudt de functionaliteit regelmatig, wat betekent dat je actuele en up-to-date geolocatie krijgt.<\/li>\n<li>Je hebt betrouwbare locatiekennis en -detectie voor je site zonder dat je JavaScript of browserrechten nodig hebt.<\/li>\n<li>Er is ook extra integratie met Kinsta&#8217;s <a href=\"https:\/\/kinsta.com\/nl\/blog\/edge-caching\/\">Edge Caching<\/a> systeem.<\/li>\n<\/ul>\n<p>De Kinsta IP Geolocatie tool bevat integratie met WordPress en kan je functionaliteit geven die goed presteert en aanpasbaar is. Dit is te danken aan de manier waarop Kinsta de locatiegegevens ontvangt en doorgeeft aan de rest van je stack.<\/p>\n<h3>Beschikbare locatiegegevens<\/h3>\n<p>WordPress gebruikt PHP en de IP Geolocatie tool geeft locatiegegevens door aan de <code>$_SERVER<\/code> PHP variabele.<\/p>\n<p>Er zijn een aantal endpoints en variabelen beschikbaar die verschillende sets met gegevens teruggeven:<\/p>\n<pre><code class=\"language-php\">\/\/ Basic geographical data\n\n$country_code = $_SERVER['GEOIP_COUNTRY_CODE']; \/\/ Two-letter country code (such as \"US\" or \"GB\")\n$country_name = $_SERVER['GEOIP_COUNTRY_NAME']; \/\/ Full country name\n$region = $_SERVER['GEOIP_REGION'];             \/\/ State\/province code\n$city = $_SERVER['GEOIP_CITY'];                 \/\/ City name\n$postal_code = $_SERVER['GEOIP_POSTAL_CODE'];   \/\/ Local postal or ZIP code\n\n\/\/ Precise location data\n$latitude = $_SERVER['GEOIP_LATITUDE'];         \/\/ Decimal latitude\n$longitude = $_SERVER['GEOIP_LONGITUDE'];       \/\/ Decimal longitude\n<\/code><\/pre>\n<p>Er zijn meer variabelen die je kunt gebruiken, zoals verschillende land- en plaatscodes. Alle blootgestelde variabelen geven je een manier om aangepaste PHP te coderen op basis van de functionaliteit van Kinsta&#8217;s IP Geolocatie.<\/p>\n<h2>Geolocatie implementeren via MyKinsta<\/h2>\n<p>Zoals met veel van de functionaliteit binnen MyKinsta, is het instellen van geolocatie via het dashboard eenvoudig. De eerste route is het <strong>Tools<\/strong> scherm voor al je sites:<\/p>\n<figure id=\"attachment_190272\" aria-describedby=\"caption-attachment-190272\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190272 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/mykinsta-tools.png\" alt=\"Het MyKinsta configuratiescherm toont zes feature kaarten in een raster lay-out. De bovenste rij toont New Relic monitoring, wachtwoordbeveiliging en HTTPS forceren opties. De onderste rij toont de features Geolocation, ionCube Loader en PHP settings.\" width=\"1200\" height=\"645\"><figcaption id=\"caption-attachment-190272\" class=\"wp-caption-text\">Het Tools scherm voor een site binnen het MyKinsta dashboard.<\/figcaption><\/figure>\n<p>Als je op de knop <strong>Inschakelen<\/strong> klikt op de kaart <strong>Geolocatie<\/strong>, verschijnt er een dialoogvenster waarin je kunt kiezen om geolocatie in te stellen op landniveau of op land en stad.<\/p>\n<figure id=\"attachment_190270\" aria-describedby=\"caption-attachment-190270\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190270 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/geolocation-modal-box.png\" alt=\"Een modaal dialoogvenster voor geolocatie-instellingen binnen het MyKinsta-controlepaneel. Keuzerondjes maken geolocatie mogelijk op landniveau of op land- en plaatsniveau.\" width=\"1200\" height=\"513\"><figcaption id=\"caption-attachment-190270\" class=\"wp-caption-text\">Geolocatie instellen binnen MyKinsta.<\/figcaption><\/figure>\n<p>In sommige gevallen zie je ook een waarschuwing als je Edge Caching gebruikt. Dit komt omdat het geen &#8220;narrow-scope&#8221; geolocatie cachevarianten ondersteunt &#8211; bijvoorbeeld in de buurt van grenzen. In plaats daarvan wordt de cache opgeslagen op elke <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-cdn\/\">Point of Presence (PoP)<\/a> locatie op basis van waar de eerste bezoeker van de pagina woont.<\/p>\n<p>Zodra je een geolocatie-instelling hebt gekozen en op de knop <strong>Inschakelen<\/strong> hebt geklikt, zal MyKinsta alles achter de schermen instellen. Na enkele ogenblikken zie je dat het paneel <b>Tools <\/b>wordt bijgewerkt met nieuwe opties:<\/p>\n<figure id=\"attachment_190268\" aria-describedby=\"caption-attachment-190268\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190268 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/geolocation-enabled.png\" alt=\"Het Tool-scherm van het MyKinsta dashboard met een zijbalkmenu met opties zoals Domeinen, Back-ups, Tools en Analytics. Het hoofdgedeelte van de content toont een kaart met een Geolocatie feature met een wereldbolpictogram, waarin wordt uitgelegd dat het redirect-regels mogelijk maakt op basis van de IP-locaties van bezoekers. De status geeft aan dat het \u201cIngeschakeld voor land en stad\u201d is met een knop Wijzigen beschikbaar.\" width=\"1200\" height=\"568\"><figcaption id=\"caption-attachment-190268\" class=\"wp-caption-text\">De Tools pagina IP Geolocatie binnen MyKinsta.<\/figcaption><\/figure>\n<p>Je hebt de optie om geolocatie uit te schakelen onder het kebabmenu. Als je op <strong>Wijzigen<\/strong> klikt, verschijnt het dialoogvenster voor de geolocatiekeuze weer zodat je deze kunt aanpassen. Tot slot, als je geoblocking wilt inschakelen &#8211; wat de toegang tot je site beperkt op basis van de locatie &#8211; kan het <a href=\"https:\/\/kinsta.com\/nl\/kinsta-support\/\">Kinsta supportteam<\/a> dit voor je doen, omdat het niet beschikbaar is via het MyKinsta dashboard.<\/p>\n<h2>Locatiebewuste toepassingen bouwen: praktische voorbeelden<\/h2>\n<p>Je hebt praktisch alle tools en functionaliteit tot je beschikking via <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-nginx\/\">NGINX<\/a> en MyKinsta&#8217;s implementaties van geolocatie. Dit betekent dat je veel ruimte hebt om zowel codesnippets als Kinsta&#8217;s ingebouwde mogelijkheden te gebruiken om een oplossing op te zetten die voldoet aan jouw behoeften.<\/p>\n<p>Voor een oplossing zonder code is de omleidingsfunctionaliteit van Kinsta ideaal.<\/p>\n<h3>Geografisch gebaseerde omleidingen<\/h3>\n<p>Een van de belangrijkste facetten van Kinsta&#8217;s IP Geolocatie tool is hoe je op locatie gebaseerde voorwaarden kunt toepassen door middel van geavanceerde verkeersrouting.<\/p>\n<p>Als je code zou gebruiken voor een dergelijke opstelling, dan zou daar nog heel wat werk in moeten zitten:<\/p>\n<pre><code class=\"language-php\">class GeographicRedirects {\n    public function __construct() {\n        add_action('template_redirect', [$this, 'handle_redirects']);\n    }\n\n    public function handle_redirects() {\n        $country_code = $_SERVER['GEOIP_COUNTRY_CODE'] ?? null;\n\n        if ($country_code) {\n            $redirect_url = $this-&gt;get_redirect_url($country_code);\n            if ($redirect_url) {\n                wp_redirect($redirect_url, 301);\n                exit;\n            }\n        }\n    }\n    \n    private function get_redirect_url($country_code) {\n        $redirects = [\n            'DE' =&gt; 'https:\/\/de.example.com',\n            'FR' =&gt; 'https:\/\/fr.example.com',\n            'ES' =&gt; 'https:\/\/es.example.com'\n        ];\n\n        return $redirects[$country_code] ?? null;\n    }\n}\n\nnew GeographicRedirects();\n<\/code><\/pre>\n<p>In plaats daarvan kun je met MyKinsta het paneel <strong>Redirects<\/strong> gebruiken, dat velden bevat voor het kiezen van een land en een stad.<\/p>\n<figure id=\"attachment_190274\" aria-describedby=\"caption-attachment-190274\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190274 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/redirect-rules.png\" alt=\"Het MyKinsta redirect rule configuratie modale venster toont velden voor het instellen van locatie-gebaseerde redirects. Het formulier bevat vervolgkeuzemenu's voor domeinselectie en locatie targeting, met invoervelden voor het specificeren van redirect paden.\" width=\"1200\" height=\"735\"><figcaption id=\"caption-attachment-190274\" class=\"wp-caption-text\">Een omleidingsregel toevoegen via het MyKinsta dashboard.<\/figcaption><\/figure>\n<p>Dit is een krachtige manier om de geolocatie van Kinsta te gebruiken naast <a href=\"https:\/\/kinsta.com\/nl\/docs\/wordpress-hosting\/redirect-regels\/\">omleidingsregels<\/a>. Je hoeft alleen maar de URL&#8217;s in te vullen waarvan en waarnaar je wilt doorverwijzen, een domein te kiezen, een land en stad te selecteren en de statuscode te defini\u00ebren. Zodra je op de knop <strong>Een redirect toevoegen <\/strong>klikt, past Kinsta deze toe op je NGINX configuratie.<\/p>\n<h3>Interactieve kaartintegratie<\/h3>\n<p>Een dynamische winkel-locator toont de locatie van de bezoeker en een van je winkels in de buurt. Dit is ideaal als je een aantal filialen hebt, vooral als ze verspreid zijn over een groot gebied:<\/p>\n<figure id=\"attachment_190271\" aria-describedby=\"caption-attachment-190271\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-190271 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2025\/01\/ikea-store-locator.png\" alt=\"Een IKEA Nederland woonwarenhuis zoeker toont een kaart van West-Nederland met meerdere woonwarenhuislocaties gemarkeerd door blauwe spelden. Aan de linkerkant zie je een lijst met IKEA woonwarenhuizen, waaronder Delft, Barendrecht, Haarlem en Breda, met hun adressen en openingstijden. De basiskaart wordt geleverd door Google Maps en bevat geografische features zoals de kustlijn van de Noordzee en belangrijke snelwegen.\" width=\"1200\" height=\"662\"><figcaption id=\"caption-attachment-190271\" class=\"wp-caption-text\">De winkelzoeker op de Nederlandse website van Ikea.<\/figcaption><\/figure>\n<p>Je kunt een soortgelijke interactieve ervaring cre\u00ebren met behulp van Kinsta&#8217;s IP Geolocatie variabelen en de Google Maps API. Hiervoor heb je een <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-google-maps\/\">Google Maps API-sleutel<\/a> nodig en een basiskennis van de <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/overview\" target=\"_blank\" rel=\"noopener noreferrer\">Google Maps JavaScript API<\/a>. Je hebt ook de locatiegegevens nodig van elke winkel die je beheert. De gegevens kunnen in dit geval afkomstig zijn van een custom berichttype of een database.<\/p>\n<p>Voor de implementatie is het gebruikelijk om de code toe te voegen aan het bestand <code>functions.php<\/code> van je thema of een <a href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-plugin-uitbeidbaar-maken\/\">custom plugin<\/a>. Zodra je je Google Maps API-sleutel hebt ingesteld, kun je de gegevensstructuur voor de winkellocatie instellen:<\/p>\n<pre><code class=\"language-php\">\/\/ Register the store locations post type\nadd_action('init', function() {\n    register_post_type('store_location', [\n        'public' =&gt; true,\n        'label' =&gt; 'Store Locations',\n        'supports' =&gt; ['title', 'editor', 'custom-fields'],\n        'show_in_rest' =&gt; true\n    ]);\n\n    \/\/ Register custom fields for location data\n    register_meta('post', 'latitude', [\n        'type' =&gt; 'number',\n        'single' =&gt; true,\n        'show_in_rest' =&gt; true\n    ]);\n    register_meta('post', 'longitude', [\n        'type' =&gt; 'number',\n        'single' =&gt; true,\n        'show_in_rest' =&gt; true\n    ]);\n});\n<\/code><\/pre>\n<p>Om je winkellocaties te importeren, kun je de WordPress admin-interface gebruiken, een custom berichttype maken, de lengte- en breedtegraad toevoegen in custom velden, winkeldetails toevoegen aan je inhoud of zelfs een programmatische import uitvoeren. Bijvoorbeeld:<\/p>\n<pre><code class=\"language-php\">function import_store_locations($stores) {\n    foreach ($stores as $store) {\n        $post_id = wp_insert_post([\n            'post_type' =&gt; 'store_location',\n            'post_title' =&gt; sanitize_text_field($store['name']),\n            'post_status' =&gt; 'publish'\n        ]);\n\n        if (!is_wp_error($post_id)) {\n            update_post_meta($post_id, 'latitude', floatval($store['lat']));\n            update_post_meta($post_id, 'longitude', floatval($store['lng']));\n            update_post_meta($post_id, 'address', sanitize_text_field($store['address']));\n            update_post_meta($post_id, 'phone', sanitize_text_field($store['phone']));\n        }\n    }\n}\n\n\n\/\/ Example usage:\n$stores = [\n    [\n        'name' =&gt; 'Downtown Store',\n        'lat' =&gt; 40.7128,\n        'lng' =&gt; -74.0060,\n        'address' =&gt; '123 Main St',\n        'phone' =&gt; '(555) 123-4567'\n    ]\n    \/\/ Add more stores...\n];\n\nimport_store_locations($stores);\n<\/code><\/pre>\n<p>Voor het implementeren van de locator heb je een paar regels code en de Kinsta variabelen nodig:<\/p>\n<pre><code class=\"language-php\">class StoreLocator {\n    private $visitor_location;\n    private $google_maps_key;\n \n    public function __construct($google_maps_key) {\n        $this-&gt;google_maps_key = $google_maps_key;\n        $this-&gt;visitor_location = $this-&gt;get_visitor_location();        \n\n        add_action('wp_enqueue_scripts', [$this, 'enqueue_maps_scripts']);\n    }\n\n    private function get_visitor_location() {\n        \/\/ Use Kinsta's geolocation data\n        if (isset($_SERVER['GEOIP_LATITUDE'], $_SERVER['GEOIP_LONGITUDE'])) {\n            return [\n                'lat' =&gt; floatval($_SERVER['GEOIP_LATITUDE']),\n                'lng' =&gt; floatval($_SERVER['GEOIP_LONGITUDE'])\n            ];\n        }\n\n        \/\/ Fallback to country center\n        if (isset($_SERVER['GEOIP_COUNTRY_CODE'])) {\n            return $this-&gt;get_country_center($_SERVER['GEOIP_COUNTRY_CODE']);\n        }\n\n        \/\/ Default to New York\n        return ['lat' =&gt; 40.7128, 'lng' =&gt; -74.0060];\n    }\n\n    private function get_nearby_stores($radius = 50) {\n        return get_posts([\n            'post_type' =&gt; 'store_location',\n            'posts_per_page' =&gt; 10,\n            'meta_query' =&gt; [\n                [\n                    'key' =&gt; 'latitude',\n                    'value' =&gt; [\n                        $this-&gt;visitor_location['lat'] - ($radius \/ 111),\n                        $this-&gt;visitor_location['lat'] + ($radius \/ 111)\n                    ],\n                    'type' =&gt; 'NUMERIC',\n                    'compare' =&gt; 'BETWEEN'\n                ]\n            ]\n        ]);\n    }\n\u2026\n<\/code><\/pre>\n<p>Vanaf hier kun je de kaart toevoegen aan je template met <code>$store_locator-&gt;render_map()<\/code>.<\/p>\n<h3>Dynamische levering van content<\/h3>\n<p>Locatiespecifieke content, prijzen en aanbiedingen zijn belangrijke toepassingen die afhankelijk zijn van geolocatie. Met locatiebewuste levering van inhoud kun je de content, prijzen en aanbiedingen van je site aanpassen op basis van de locatie van je bezoekers.<\/p>\n<p>Om dit voor je projecten te implementeren, heb je de inhoudsvariaties nodig voor de verschillende regio&#8217;s waarop je je wilt richten. Van daaruit kun je beginnen met het cre\u00ebren van een betrouwbare manier om locatiegegevens te verwerken en cache-sleutels te genereren. Dit zorgt voor een effici\u00ebnte levering van inhoud met behoud van locatiebewustzijn:<\/p>\n<pre><code class=\"language-php\">private function get_location_context() {\n    \/\/ Create unique cache keys based on location data\n    $context = [\n        'country' =&gt; $_SERVER['GEOIP_COUNTRY_CODE'] ?? null,\n        'region'  =&gt; $_SERVER['GEOIP_REGION'] ?? null,\n        'locale'  =&gt; get_locale()\n    ];\n\n    \/\/ Add currency and timezone data if needed\n    if ($this-&gt;requires_currency_handling) {\n        $context['currency'] = $this-&gt;get_country_currency($context['country']);\n    }\n\n    return $context;\n}\n<\/code><\/pre>\n<p>Dit vormt de basis voor elke locatiegebaseerde beslissing en voor je contentverwerkingssysteem. Hiermee worden zowel prijs- als regionale contentvariaties verwerkt:<\/p>\n<pre><code class=\"language-php\">private function process_dynamic_content($content, $context) {\n    \/\/ Handle pricing with currency conversion\n    if (strpos($content, '{price:') !== false) {\n        $content = preg_replace_callback(\n            '\/{price:([0-9]+.?[0-9]*)}\/',\n            fn($matches) =&gt; $this-&gt;format_price(\n                floatval($matches[1]), \n                $context['currency']\n            ),\n            $content\n        );\n    }\n\n    \/\/ Process regional content blocks\n    if (strpos($content, '[region:') !== false) {\n        $content = preg_replace_callback(\n            '\/[region:([^]]+)](.*?)[\/region]\/s',\n            function($matches) use ($context) {\n                $regions = array_map('trim', explode(',', $matches[1]));\n                return in_array($context['country'], $regions) ? $matches[2] : '';\n            },\n            $content\n        );\n    }\n\n    return $content;\n}\n<\/code><\/pre>\n<p>Hiermee kun je eenvoudige markeringen in je inhoud gebruiken die zich automatisch aanpassen aan de locatie van de bezoeker. Bijvoorbeeld:<\/p>\n<pre><code class=\"language-html\">[region:US,CA]\n    &lt;p&gt;Free shipping on orders over {price:50}!&lt;\/p&gt;\n[\/region]\n[region:GB,DE,FR]\n    &lt;p&gt;Free shipping on orders over {price:45}!&lt;\/p&gt;\n[\/region]\n<\/code><\/pre>\n<p>Met een eenvoudige implementatie kun je deze optimaliseren voor prestaties. Dit is een stap die je misschien over het hoofd ziet, maar effici\u00ebnte caching kan je helpen om de prestaties van je locatiebewuste content op peil te houden. De cachingmodellen van Kinsta zijn ideaal voor deze taak.<\/p>\n<h3>Vooraf invullen en valideren van formulieren<\/h3>\n<p>Bij het maken van locatiebewuste formulieren moet je omgaan met verschillende adresindelingen, postcodes en telefoonnummers per regio. Daarom is het belangrijk om de validatie- en opmaakregels voor die verschillende regio&#8217;s te defini\u00ebren:<\/p>\n<pre><code class=\"language-php\">private $format_patterns = [\n    'US' =&gt; [\n        'postal' =&gt; [\n            'pattern' =&gt; '^(?=.{5,10}$)d{5}(-d{4})?$',\n            'transform' =&gt; fn($value) =&gt; strtoupper(trim($value))\n        ],\n        'phone' =&gt; [\n            'pattern' =&gt; '^+1[2-9]d{2}[2-9]d{2}d{4}$',\n            'transform' =&gt; fn($value) =&gt; '+1' . preg_replace('\/D\/', '', $value)\n        ]\n    ],\n    'GB' =&gt; [\n        'postal' =&gt; [\n            'pattern' =&gt; '^(?=.{6,8}$)[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$',\n            'transform' =&gt; fn($value) =&gt; preg_replace(\n                '\/^(.+?)([0-9][A-Z]{2})$\/', \n                '$1 $2', \n                strtoupper(trim($value))\n            )\n        ]\n    ]\n];\n<\/code><\/pre>\n<p>Deze patronen verwerken veel voorkomende variaties in postcodes en telefoonnummers in verschillende landen. Verschillende landen hebben echter verschillende vereisten voor de opmaak van adressen. Je kunt een systematische aanpak gebruiken om met deze variaties om te gaan:<\/p>\n<pre><code class=\"language-php\">private function get_address_format($country_code) {\n    $formats = [\n        'US' =&gt; [\n            'required' =&gt; ['street', 'city', 'state', 'postal'],\n            'order' =&gt; ['street', 'street2', 'city', 'state', 'postal'],\n            'state_label' =&gt; 'State',\n            'state_type' =&gt; 'select'\n        ],\n        'GB' =&gt; [\n            'required' =&gt; ['street', 'city', 'postal'],\n            'order' =&gt; ['street', 'street2', 'city', 'county', 'postal'],\n            'state_label' =&gt; 'County',\n            'state_type' =&gt; 'text'\n        ]\n    ];\n\n    return $formats[$country_code] ?? $formats['US'];\n}\n<\/code><\/pre>\n<p>Kijk vervolgens naar veldvalidatie. Je moet een validatie implementeren die de regionale formaatvereisten respecteert:<\/p>\n<pre><code class=\"language-php\">private function validate_field($field, $value, $country_code) {\n    if (!isset($this-&gt;format_patterns[$country_code][$field])) {\n        return true;  \/\/ No specific validation needed\n    }\n\n    $pattern = $this-&gt;format_patterns[$country_code][$field]['pattern'];\n    $transform = $this-&gt;format_patterns[$country_code][$field]['transform'];\n\n    \/\/ Transform value before validation\n    $value = $transform($value);\n\n    return (bool)preg_match(\"\/$pattern\/\", $value);\n}\n<\/code><\/pre>\n<p>Een klein fragment brengt dit allemaal samen:<\/p>\n<pre><code class=\"language-php\">\/\/ Validate a postal code\nif (!$this-&gt;validate_field('postal', $_POST['postal_code'], 'GB')) {\n    $errors[] = 'Invalid postal code format';\n}\n<\/code><\/pre>\n<p>Deze implementatie past zich automatisch aan de locatie van de bezoeker aan, verwerkt regionale variaties in adresindelingen, biedt de juiste validatie voor locatiespecifieke velden en behoudt de gegevensintegriteit in verschillende regio&#8217;s.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Door WordPress geolocatie te implementeren via de infrastructuur van Kinsta kun je krachtige locatiebewuste applicaties maken. Het inschakelen van Kinsta&#8217;s IP Geolocatie tool betekent dat je gebruik kunt maken van server-level, robuuste, krachtige en gebruiksvriendelijke functionaliteit. Bovendien is het privacy-gericht en compliant.<\/p>\n<p>Heb je vragen over WordPress geolocatie en de implementatie ervan voor je projecten? Laat het ons weten in de commentsectie hieronder!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Moderne webapplicaties vereisen een hoog niveau van intelligente, locatiebewuste functionaliteit. E-commerce platforms moeten bijvoorbeeld internationale verzendtarieven berekenen en sites met veel content moeten regiospecifiek nieuws leveren. &#8230;<\/p>\n","protected":false},"author":259,"featured_media":62049,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[892],"class_list":["post-62048","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-wordpress-ontwikkeling"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WordPress geolocatie makkelijk en simpel: een gids voor developers<\/title>\n<meta name=\"description\" content=\"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers\" \/>\n<meta property=\"og:description\" content=\"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-03T08:56:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-07T12:40:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers-1024x512.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers\",\"datePublished\":\"2025-03-03T08:56:55+00:00\",\"dateModified\":\"2025-03-07T12:40:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\"},\"wordCount\":2809,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png\",\"inLanguage\":\"nl-NL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\",\"name\":\"WordPress geolocatie makkelijk en simpel: een gids voor developers\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png\",\"datePublished\":\"2025-03-03T08:56:55+00:00\",\"dateModified\":\"2025-03-07T12:40:10+00:00\",\"description\":\"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress ontwikkeling\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress geolocatie makkelijk en simpel: een gids voor developers","description":"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/","og_locale":"nl_NL","og_type":"article","og_title":"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers","og_description":"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.","og_url":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2025-03-03T08:56:55+00:00","article_modified_time":"2025-03-07T12:40:10+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers-1024x512.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Steve Bonisteel","Geschatte leestijd":"20 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers","datePublished":"2025-03-03T08:56:55+00:00","dateModified":"2025-03-07T12:40:10+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/"},"wordCount":2809,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png","inLanguage":"nl-NL"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/","url":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/","name":"WordPress geolocatie makkelijk en simpel: een gids voor developers","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png","datePublished":"2025-03-03T08:56:55+00:00","dateModified":"2025-03-07T12:40:10+00:00","description":"Geolocatie features implementeren in WordPress is mogelijk, vooral als je een Kinsta-gebruiker bent. Dit artikel gaat in op locatiebewuste tactieken.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2025\/03\/wordpress-geolocation-for-developers.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/wordpress-geolocatie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"WordPress ontwikkeling","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/wordpress-ontwikkeling\/"},{"@type":"ListItem","position":3,"name":"WordPress geolocatie eenvoudig uitgelegd: een gids voor developers"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/nl\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/62048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=62048"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/62048\/revisions"}],"predecessor-version":[{"id":62076,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/62048\/revisions\/62076"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/62048\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/62049"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=62048"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=62048"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=62048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}