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.
Deze uitgebreide gids onderzoekt hoe je krachtige geolocatiefeatures kunt implementeren in WordPress. 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.
Geotargeting en geolocatie begrijpen
Bij locatiebewuste toepassingen staan twee termen centraal: geotargeting en geolocatie. Ze zijn verwant, maar dienen elk een ander doel in je WordPress toolbox:
- Geolocatie lokaliseert de locatie van je bezoekers.
- Geotargeting levert specifieke content of ervaringen op basis van die gegevens.
Netflix 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.

Er zijn twee primaire methoden om de locatie van de bezoeker te bepalen:
- Op IP gebaseerde locatiedetectie vertrouwt op databases die IP-adressen aan geografische regio’s koppelen. Het werkt universeel zonder toestemming van de gebruiker. De meeste server-side geolocatie-oplossingen gebruiken dit, inclusief de ingebouwde mogelijkheden van Kinsta.
- Op GPS gebaseerde detectie heeft toegang tot de locatiehardware van een apparaat via browser-API’s. Het biedt precieze coördinaten, maar vereist expliciete toestemming van de gebruiker. Het levert precieze coördinaten maar vereist expliciete toestemming van de gebruiker. Deze functionaliteit wordt gebruikt voor “Near Me” zoekopdrachten of weerapplicaties die een exacte plaatsbepaling nodig hebben.
Geolocatie en geotargeting werken samen, maar binnen geolocatie zijn er meerdere technologieën die kunnen werken voor een bepaalde use case. Geen van beide is “beter” dan de ander – er zijn voordelen die individuele aanpassingen overstijgen.
De business case voor geolocatie
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 de ervaring kan personaliseren voor elke gebruiker, zullen meer gebruikers zaken met je doen.
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:

Afhankelijk van je locatie kun je ook relevante tijden zien voor Amazon Prime evenementen, zoals sportwedstrijden:

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.
Naleving van regelgeving is ook afhankelijk van locatiebewustzijn. De GDPR in Europa, de CCPA in Californië en nog veel meer regio’s stellen specifieke eisen aan de verwerking van gebruikersgegevens. Een goede geolocatie-implementatie helpt je om voor elke bezoeker aan dergelijke eisen te voldoen.
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 onderzoek van Common Sense Advisory blijkt bijvoorbeeld dat driekwart van de consumenten de voorkeur geeft aan het kopen van producten in hun moedertaal.
Zo kun je geolocatie integreren met WordPress
De flexibele architectuur van WordPress 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.
Werken met geografische gegevens in WordPress
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.
De WordPress database
De WordPress database kan bijvoorbeeld coördinaten en locatiegegevens opslaan met behulp van aangepaste velden of speciale locatietabellen.
Het kan ook locatiegebaseerde taxonomieën verwerken. Dit werkt goed voor store locators of onroerend goeddiensten die een aangepaste locatiedatabase gebruiken. WordPress slaat echter standaard geen geolocatiegegevens op – het is wel zo dat de mogelijkheid er is om dat te doen.
De WordPress REST API
De WordPress REST API ondersteunt ook het werken met geolocatiegegevens, hoewel er geen speciale endpoints zijn. Je zou je eigen endpoint-extensies moeten maken om locatie-bewuste applicaties te bouwen die communiceren met externe diensten of mobiele apps. Hier is een voorbeeld:
add_action('rest_api_init', function() {
// Create a custom namespace for your geolocation endpoints
register_rest_route('your-site-geo/v1', '/location', [
'methods' => 'GET',
'callback' => 'handle_location_request',
'permission_callback' => function() {
return true;
}
]);
});
function handle_location_request($request) {
// Access geolocation data (example using Kinsta's implementation)
$location = [
'country' => $_SERVER['GEOIP_COUNTRY_CODE'] ?? null,
'city' => $_SERVER['GEOIP_CITY'] ?? null,
'latitude' => $_SERVER['GEOIP_LATITUDE'] ?? null,
'longitude' => $_SERVER['GEOIP_LONGITUDE'] ?? null
];
return new WP_REST_Response($location, 200);
}
Dit maakt een nieuw endpoint aan op /wp-json/your-site-geo/v1/location
dat locatiegegevens retourneert voor API consumers.
De code gebruikt your-site-geo
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:
- Gebruik een vendor- of pakketspecifieke prefix om conflicten te voorkomen.
- Neem een versienummer op (zoals
v1
). - Houd endpoints specifiek en gericht.
Je kunt ook locatiegegevens registreren voor bestaande endpoints:
add_action('rest_api_init', function() {
register_rest_field('post', 'location_data', [
'get_callback' => function($post) {
return get_post_meta($post['id'], 'location_data', true);
},
'update_callback' => function($value, $post) {
update_post_meta($post->ID, 'location_data', $value);
},
'schema' => [
'type' => 'object',
'properties' => [
'latitude' => ['type' => 'number'],
'longitude' => ['type' => 'number'],
'country' => ['type' => 'string'],
'city' => ['type' => 'string']
]
]
]);
});
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.
Custom berichttypen
Misschien gebruik je ook custom berichttypen 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.
De eerste stap is om het berichttype te registreren bij WordPress:
register_post_type('store_location', [
'public' => true,
'label' => 'Store Locations',
'supports' => [
'title',
'editor',
'Custom-fields' // Enables custom fields and meta
]
]);
Je moet ook een aangepaste metabox maken voor het opslaan van de coördinaten die je verzamelt, en de HTML daarvoor genereren:
<?php
add_action('add_meta_boxes', function() {
add_meta_box(
'store_location_coordinates',
'Store Coordinates',
'render_location_meta_box',
'Store_location' // The post type where this meta box should appear
);
});
function render_location_meta_box($post) {
// Get existing coordinates if they exist
$latitude = get_post_meta($post->ID, 'latitude', true);
$longitude = get_post_meta($post->ID, 'longitude', true);
// Output the form fields
?>
<label>Latitude:
<input type="number"
step="any"
name="latitude"
value="<?php echo esc_attr($latitude); ?>">
</label>
<label>Longitude:
<input type="number"
step="any"
name="longitude"
value="<?php echo esc_attr($longitude); ?>">
</label>
<?php
}
Het belangrijkste is om de locatiegegevens op te slaan zodra je het bericht publiceert of anderszins opslaat in WordPress:
add_action('save_post_store_location', function($post_id) {
// Verify if this is an autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// Save latitude if it exists
if (isset($_POST['latitude'])) {
update_post_meta(
$post_id,
'latitude',
sanitize_text_field($_POST['latitude'])
);
}
// Save longitude if it exists
if (isset($_POST['longitude'])) {
update_post_meta(
$post_id,
'longitude',
sanitize_text_field($_POST['longitude'])
);
}
});
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:
function get_nearby_locations($lat, $lng, $radius = 10) {
$locations = get_posts([
'post_type' => 'store_location',
'posts_per_page' => -1
]);
$nearby = array_filter($locations, function($location) use ($lat, $lng, $radius) {
$store_lat = get_post_meta($location->ID, 'latitude', true);
$store_lng = get_post_meta($location->ID, 'longitude', true);
return calculate_distance($lat, $lng, $store_lat, $store_lng) <= $radius;
});
return $nearby;
}
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.
De pluginmethode voor geolocatie
WordPress ondersteunt plugins voor bijna alles, en er zijn ook talloze oplossingen om locatiebewustzijn aan je site toe te voegen. Bijvoorbeeld If-So Geolocation of Geolocation IP Detection hebben goede beoordelingen, regelmatige updates en gezonde ondersteuningssystemen:

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:
- Je krijgt een snelle inzet en een snelle implementatie zonder dat je custom code nodig hebt.
- Je hebt geen onderhoud nodig, omdat dit iets is wat de ontwikkelaar van de plugin doet (samen met updates).
- Er is vaak ondersteuning en documentatie van de community om je te helpen als je die nodig hebt.
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ëren als andere features.
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.
Real-world toepassingen van WordPress geolocatie
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 belastingberekeningen en verzendregels.

Het maakt gebruik van MaxMind’s GeoIP2 database om automatisch clientlocaties te detecteren, wat helpt om nauwkeurige prijzen en leveringsopties te garanderen vanaf de eerste pagina die wordt geladen.
Andere plugins bieden ook ondersteuning voor geolocatie. Een formulierplugin zoals de Gravity Forms Geolocation add-on is een typische toepassing. Hiermee kunnen gebruikers hun locatie invoeren in een formulier, waarna Gravity Forms een set coördinaten en andere relevante gegevens toewijst.
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.
Het voordeel van Kinsta: ingebouwde geolocatiemogelijkheden
Als je een klant bent van Kinsta, heb je geen extravagante en onelegante oplossingen nodig voor het implementeren van geolocatie. Het MyKinsta dashboard ondersteunt robuuste locatiedetectie zonder de overhead van extra WordPress plugins.
Het geolocatiesysteem van Kinsta
Kinsta’s geolocatie-implementatie maakt gebruik van twee krachtige technologieën:
- NGINX’s eigen geolocatiemodule biedt efficiënte locatiedetectie op serverniveau.
- MaxMind’s GeoIP2 database zorgt voor nauwkeurige en up-to-date locatiekartering.
Deze integratie binnen het MyKinsta dashboard biedt verschillende voordelen ten opzichte van een op plugin of code gebaseerde oplossing:
- Omdat de locatiedetectie op serverniveau gebeurt, is er een minimale impact op de prestaties in vergelijking met andere benaderingen.
- Kinsta onderhoudt de functionaliteit regelmatig, wat betekent dat je actuele en up-to-date geolocatie krijgt.
- Je hebt betrouwbare locatiekennis en -detectie voor je site zonder dat je JavaScript of browserrechten nodig hebt.
- Er is ook extra integratie met Kinsta’s Edge Caching systeem.
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.
Beschikbare locatiegegevens
WordPress gebruikt PHP en de IP Geolocatie tool geeft locatiegegevens door aan de $_SERVER
PHP variabele.
Er zijn een aantal endpoints en variabelen beschikbaar die verschillende sets met gegevens teruggeven:
// Basic geographical data
$country_code = $_SERVER['GEOIP_COUNTRY_CODE']; // Two-letter country code (such as "US" or "GB")
$country_name = $_SERVER['GEOIP_COUNTRY_NAME']; // Full country name
$region = $_SERVER['GEOIP_REGION']; // State/province code
$city = $_SERVER['GEOIP_CITY']; // City name
$postal_code = $_SERVER['GEOIP_POSTAL_CODE']; // Local postal or ZIP code
// Precise location data
$latitude = $_SERVER['GEOIP_LATITUDE']; // Decimal latitude
$longitude = $_SERVER['GEOIP_LONGITUDE']; // Decimal longitude
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’s IP Geolocatie.
Geolocatie implementeren via MyKinsta
Zoals met veel van de functionaliteit binnen MyKinsta, is het instellen van geolocatie via het dashboard eenvoudig. De eerste route is het Tools scherm voor al je sites:

Als je op de knop Inschakelen klikt op de kaart Geolocatie, verschijnt er een dialoogvenster waarin je kunt kiezen om geolocatie in te stellen op landniveau of op land en stad.

In sommige gevallen zie je ook een waarschuwing als je Edge Caching gebruikt. Dit komt omdat het geen “narrow-scope” geolocatie cachevarianten ondersteunt – bijvoorbeeld in de buurt van grenzen. In plaats daarvan wordt de cache opgeslagen op elke Point of Presence (PoP) locatie op basis van waar de eerste bezoeker van de pagina woont.
Zodra je een geolocatie-instelling hebt gekozen en op de knop Inschakelen hebt geklikt, zal MyKinsta alles achter de schermen instellen. Na enkele ogenblikken zie je dat het paneel Tools wordt bijgewerkt met nieuwe opties:

Je hebt de optie om geolocatie uit te schakelen onder het kebabmenu. Als je op Wijzigen klikt, verschijnt het dialoogvenster voor de geolocatiekeuze weer zodat je deze kunt aanpassen. Tot slot, als je geoblocking wilt inschakelen – wat de toegang tot je site beperkt op basis van de locatie – kan het Kinsta supportteam dit voor je doen, omdat het niet beschikbaar is via het MyKinsta dashboard.
Locatiebewuste toepassingen bouwen: praktische voorbeelden
Je hebt praktisch alle tools en functionaliteit tot je beschikking via NGINX en MyKinsta’s implementaties van geolocatie. Dit betekent dat je veel ruimte hebt om zowel codesnippets als Kinsta’s ingebouwde mogelijkheden te gebruiken om een oplossing op te zetten die voldoet aan jouw behoeften.
Voor een oplossing zonder code is de omleidingsfunctionaliteit van Kinsta ideaal.
Geografisch gebaseerde omleidingen
Een van de belangrijkste facetten van Kinsta’s IP Geolocatie tool is hoe je op locatie gebaseerde voorwaarden kunt toepassen door middel van geavanceerde verkeersrouting.
Als je code zou gebruiken voor een dergelijke opstelling, dan zou daar nog heel wat werk in moeten zitten:
class GeographicRedirects {
public function __construct() {
add_action('template_redirect', [$this, 'handle_redirects']);
}
public function handle_redirects() {
$country_code = $_SERVER['GEOIP_COUNTRY_CODE'] ?? null;
if ($country_code) {
$redirect_url = $this->get_redirect_url($country_code);
if ($redirect_url) {
wp_redirect($redirect_url, 301);
exit;
}
}
}
private function get_redirect_url($country_code) {
$redirects = [
'DE' => 'https://de.example.com',
'FR' => 'https://fr.example.com',
'ES' => 'https://es.example.com'
];
return $redirects[$country_code] ?? null;
}
}
new GeographicRedirects();
In plaats daarvan kun je met MyKinsta het paneel Redirects gebruiken, dat velden bevat voor het kiezen van een land en een stad.

Dit is een krachtige manier om de geolocatie van Kinsta te gebruiken naast omleidingsregels. Je hoeft alleen maar de URL’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ëren. Zodra je op de knop Een redirect toevoegen klikt, past Kinsta deze toe op je NGINX configuratie.
Interactieve kaartintegratie
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:

Je kunt een soortgelijke interactieve ervaring creëren met behulp van Kinsta’s IP Geolocatie variabelen en de Google Maps API. Hiervoor heb je een Google Maps API-sleutel nodig en een basiskennis van de Google Maps JavaScript API. 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.
Voor de implementatie is het gebruikelijk om de code toe te voegen aan het bestand functions.php
van je thema of een custom plugin. Zodra je je Google Maps API-sleutel hebt ingesteld, kun je de gegevensstructuur voor de winkellocatie instellen:
// Register the store locations post type
add_action('init', function() {
register_post_type('store_location', [
'public' => true,
'label' => 'Store Locations',
'supports' => ['title', 'editor', 'custom-fields'],
'show_in_rest' => true
]);
// Register custom fields for location data
register_meta('post', 'latitude', [
'type' => 'number',
'single' => true,
'show_in_rest' => true
]);
register_meta('post', 'longitude', [
'type' => 'number',
'single' => true,
'show_in_rest' => true
]);
});
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:
function import_store_locations($stores) {
foreach ($stores as $store) {
$post_id = wp_insert_post([
'post_type' => 'store_location',
'post_title' => sanitize_text_field($store['name']),
'post_status' => 'publish'
]);
if (!is_wp_error($post_id)) {
update_post_meta($post_id, 'latitude', floatval($store['lat']));
update_post_meta($post_id, 'longitude', floatval($store['lng']));
update_post_meta($post_id, 'address', sanitize_text_field($store['address']));
update_post_meta($post_id, 'phone', sanitize_text_field($store['phone']));
}
}
}
// Example usage:
$stores = [
[
'name' => 'Downtown Store',
'lat' => 40.7128,
'lng' => -74.0060,
'address' => '123 Main St',
'phone' => '(555) 123-4567'
]
// Add more stores...
];
import_store_locations($stores);
Voor het implementeren van de locator heb je een paar regels code en de Kinsta variabelen nodig:
class StoreLocator {
private $visitor_location;
private $google_maps_key;
public function __construct($google_maps_key) {
$this->google_maps_key = $google_maps_key;
$this->visitor_location = $this->get_visitor_location();
add_action('wp_enqueue_scripts', [$this, 'enqueue_maps_scripts']);
}
private function get_visitor_location() {
// Use Kinsta's geolocation data
if (isset($_SERVER['GEOIP_LATITUDE'], $_SERVER['GEOIP_LONGITUDE'])) {
return [
'lat' => floatval($_SERVER['GEOIP_LATITUDE']),
'lng' => floatval($_SERVER['GEOIP_LONGITUDE'])
];
}
// Fallback to country center
if (isset($_SERVER['GEOIP_COUNTRY_CODE'])) {
return $this->get_country_center($_SERVER['GEOIP_COUNTRY_CODE']);
}
// Default to New York
return ['lat' => 40.7128, 'lng' => -74.0060];
}
private function get_nearby_stores($radius = 50) {
return get_posts([
'post_type' => 'store_location',
'posts_per_page' => 10,
'meta_query' => [
[
'key' => 'latitude',
'value' => [
$this->visitor_location['lat'] - ($radius / 111),
$this->visitor_location['lat'] + ($radius / 111)
],
'type' => 'NUMERIC',
'compare' => 'BETWEEN'
]
]
]);
}
…
Vanaf hier kun je de kaart toevoegen aan je template met $store_locator->render_map()
.
Dynamische levering van content
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.
Om dit voor je projecten te implementeren, heb je de inhoudsvariaties nodig voor de verschillende regio’s waarop je je wilt richten. Van daaruit kun je beginnen met het creëren van een betrouwbare manier om locatiegegevens te verwerken en cache-sleutels te genereren. Dit zorgt voor een efficiënte levering van inhoud met behoud van locatiebewustzijn:
private function get_location_context() {
// Create unique cache keys based on location data
$context = [
'country' => $_SERVER['GEOIP_COUNTRY_CODE'] ?? null,
'region' => $_SERVER['GEOIP_REGION'] ?? null,
'locale' => get_locale()
];
// Add currency and timezone data if needed
if ($this->requires_currency_handling) {
$context['currency'] = $this->get_country_currency($context['country']);
}
return $context;
}
Dit vormt de basis voor elke locatiegebaseerde beslissing en voor je contentverwerkingssysteem. Hiermee worden zowel prijs- als regionale contentvariaties verwerkt:
private function process_dynamic_content($content, $context) {
// Handle pricing with currency conversion
if (strpos($content, '{price:') !== false) {
$content = preg_replace_callback(
'/{price:([0-9]+.?[0-9]*)}/',
fn($matches) => $this->format_price(
floatval($matches[1]),
$context['currency']
),
$content
);
}
// Process regional content blocks
if (strpos($content, '[region:') !== false) {
$content = preg_replace_callback(
'/[region:([^]]+)](.*?)[/region]/s',
function($matches) use ($context) {
$regions = array_map('trim', explode(',', $matches[1]));
return in_array($context['country'], $regions) ? $matches[2] : '';
},
$content
);
}
return $content;
}
Hiermee kun je eenvoudige markeringen in je inhoud gebruiken die zich automatisch aanpassen aan de locatie van de bezoeker. Bijvoorbeeld:
[region:US,CA]
<p>Free shipping on orders over {price:50}!</p>
[/region]
[region:GB,DE,FR]
<p>Free shipping on orders over {price:45}!</p>
[/region]
Met een eenvoudige implementatie kun je deze optimaliseren voor prestaties. Dit is een stap die je misschien over het hoofd ziet, maar efficiënte caching kan je helpen om de prestaties van je locatiebewuste content op peil te houden. De cachingmodellen van Kinsta zijn ideaal voor deze taak.
Vooraf invullen en valideren van formulieren
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’s te definiëren:
private $format_patterns = [
'US' => [
'postal' => [
'pattern' => '^(?=.{5,10}$)d{5}(-d{4})?$',
'transform' => fn($value) => strtoupper(trim($value))
],
'phone' => [
'pattern' => '^+1[2-9]d{2}[2-9]d{2}d{4}$',
'transform' => fn($value) => '+1' . preg_replace('/D/', '', $value)
]
],
'GB' => [
'postal' => [
'pattern' => '^(?=.{6,8}$)[A-Z]{1,2}[0-9][A-Z0-9]? ?[0-9][A-Z]{2}$',
'transform' => fn($value) => preg_replace(
'/^(.+?)([0-9][A-Z]{2})$/',
'$1 $2',
strtoupper(trim($value))
)
]
]
];
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:
private function get_address_format($country_code) {
$formats = [
'US' => [
'required' => ['street', 'city', 'state', 'postal'],
'order' => ['street', 'street2', 'city', 'state', 'postal'],
'state_label' => 'State',
'state_type' => 'select'
],
'GB' => [
'required' => ['street', 'city', 'postal'],
'order' => ['street', 'street2', 'city', 'county', 'postal'],
'state_label' => 'County',
'state_type' => 'text'
]
];
return $formats[$country_code] ?? $formats['US'];
}
Kijk vervolgens naar veldvalidatie. Je moet een validatie implementeren die de regionale formaatvereisten respecteert:
private function validate_field($field, $value, $country_code) {
if (!isset($this->format_patterns[$country_code][$field])) {
return true; // No specific validation needed
}
$pattern = $this->format_patterns[$country_code][$field]['pattern'];
$transform = $this->format_patterns[$country_code][$field]['transform'];
// Transform value before validation
$value = $transform($value);
return (bool)preg_match("/$pattern/", $value);
}
Een klein fragment brengt dit allemaal samen:
// Validate a postal code
if (!$this->validate_field('postal', $_POST['postal_code'], 'GB')) {
$errors[] = 'Invalid postal code format';
}
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’s.
Samenvatting
Door WordPress geolocatie te implementeren via de infrastructuur van Kinsta kun je krachtige locatiebewuste applicaties maken. Het inschakelen van Kinsta’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.
Heb je vragen over WordPress geolocatie en de implementatie ervan voor je projecten? Laat het ons weten in de commentsectie hieronder!