Первое что нужно понимать - геолокацию лучше всего делать на уровне сервера. У Nginx и Apache есть для этого модули, многие сервисы типа CloudFlare (если вы используете) делают геолокацию и передают данные в заголовках. В обеих случаях данные геолокации будут доступны в массиве $_SERVER. Это обеспечит максимальную производительность. Есть еще вариант на уровне модуля PHP, но имхо это полумера. Ну а если это на уровне PHP (а тем более на уровне WordPress), то скорость будет желать лучшего. Для геолокации нужно сверить IP по огромной базе данных. На уровне сервера это бинарный файл и все оптимизировано до максимума. На PHP это все runtime и крайне неэффективно.
Впрочем, если вам все равно нужно простое и быстрое решение в виде плагина, несмотря на все недостатки - смотрите тут
https://wordpress.org/plugins/tags/geolocation/.
Есть еще вариант запрашивать сторонний API, передавая ему IP-адрес, но это вообще адски медленная муть по сравнению с серверной геолокацией.
Дополнительно не забудьте учесть, что так или иначе данные геолокации вам будут доступны на уровне PHP. Это означает, что если вы используете плагин для кеширования страниц целиком (full page cache), то WordPress в этом случае не запускается вообще (а то и PHP не запускается - зависит от реализации механизма FPC). В этом случае придется опираться на Javascript. Для этого есть HTML Geolocation API, но он эффективен на устройствах с геолокацией и запрашивает у пользователя разрешение на доступ к данным геолокации. Более надежным (но менее производительным) будет что-то из разряда
https://dev.maxmind.com/geoip/geoip2/javascript/. Ну или аналоги ищите.