I created this plugin to be able to make a website look localized to the location defined on a Google AdWords or Facebook Ad Campaign. The plugin is able to detect the location based on the Final URL. To Automate changing all of your Google Ads Tracking Templates take a look at this post.
To make this work you will need to define with
<?php /* * Plugin Name: City Customizer ShortCode * Description: This plugin will read get parameters and echo out the correct city information. Proper use is [grabCity output="localphone"] ouput can be any of the following, localphone, address, cityname * Version: 1.2 * Author: Corey Jansen * Author URI: https://coreyjansen.com */ //DEFINE CITY NAME AND CITY INFO $defaultCityName = "Winnipeg"; $cityInfo = array( array( "cityname" => "Winnipeg", "localphone" => '<a href="tel:12045555555">(204) 555-5555</a>', "address" => '2080 Pembina Hwy, Winnipeg Manitoba R2E 1S5' ) , array( "cityname" => "Brandon", "localphone" => '<a href="tel:12045555555">(204) 555-5555</a>', "address" => '2080 Pembina Hwy, Winnipeg Manitoba R2E 1S5' ) , array( "cityname" => "Calgary", "localphone" => '<a href="tel:14035555555">(403) 555-5555</a>', "address" => '123 Fake Street, Calgary Alberta C2E 5S5' ) ); //MAIN FUNCTION THAT PULLS IN ATTRIBUTES FROM SHORTCODE AND RETURNS THE INFORMATION function citycus_mainGetInformation($atts = [], $content = null, $tag = '') { // ---------- START FUNCTION TO GET WHICH DATA WE WANT TO ECHO ---------- // NORMALIZE ATTRIBUTE KEYS, LOWERCASE $atts = array_change_key_case((array)$atts, CASE_LOWER); // OVERRIDE DEFAULT ATTRIBUTES WITH USER ATTRIBUTES $wporg_atts = shortcode_atts(['output' => 'city', ], $atts, $tag); $output = esc_html__($wporg_atts['output']); $campaignName = citycus_getCityName(); return citycus_getCityInfo($campaignName, $output); } //FUNCTION THAT PULLS THE CITY INFO BASED ON WHAT WAS DEFINED IN THE OUTPUT PARAMETER IN THE SHORT CODE function citycus_getCityInfo($cityName, $returnInfo) { global $cityInfo; foreach($cityInfo as $currentCity) { if ($currentCity['cityname'] == $cityName) { return $currentCity[$returnInfo]; } } } // GETS CITY NAME FROM COOKIE IF SET. IF NOT GETS FROM GET PARAMETER AND // SAVES TO COOKIE SO THAT THE PARAMETER INFORMATION IS STORED ON ALL PAGES function citycus_getCityName() { $campaignName = $_GET['utm_campaign']; $currentCityName = citycus_returnCityName($campaignName); $cookie_name = "WebsiteCampaignCity"; // Check if cookie is set if (isset($_COOKIE[$cookie_name])) { return $_COOKIE[$cookie_name]; } else { setcookie($cookie_name, $currentCityName, time() + (86400 * 30 * 7) , "/"); // 86400 * 7 = 7 DAYS return $currentCityName; } } // CHECKS GET PARAMETER AND RETURNS CITY NAME WILL RETURN DEFAULT IF NOT SET function citycus_returnCityName($campaignName) { foreach($GLOBALS['cityInfo'] as $currentCity) { $result = citycus_checkCityName($campaignName, $currentCity['cityname']); if ($result) { return $currentCity['cityname']; } } return $GLOBALS['defaultCityName']; } //CHECKS IF CITY NAME MATCHES function citycus_checkCityName($campaignName, $cityName) { if (strpos(strtolower($campaignName), strtolower($cityName)) !== false) { return true; } else { return false; } } //INITIATES SHORTCODE FUNCTION function wpgrabCity_shortcodes_init() { add_shortcode('grabCity', 'citycus_mainGetInformation'); } add_action('init', 'wpgrabCity_shortcodes_init');