{"id":3782,"date":"2026-04-15T12:58:48","date_gmt":"2026-04-15T12:58:48","guid":{"rendered":"https:\/\/tennisradar.gr\/blog\/?page_id=3782"},"modified":"2026-04-15T14:24:54","modified_gmt":"2026-04-15T14:24:54","slug":"all-tennis-courts-in-athens","status":"publish","type":"page","link":"https:\/\/tennisradar.gr\/blog\/en\/all-tennis-courts-in-athens\/","title":{"rendered":"Tennis courts in Athens"},"content":{"rendered":"\r\n<div class=\"wp-block-spacer\" style=\"height: 20px;\" aria-hidden=\"true\">\u00a0<\/div>\r\n\r\n\r\n\r\n<style>\r\n.area-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\r\n  gap: 1rem;\r\n  max-width: 1000px;\r\n  margin: 1rem auto;\r\n}\r\n.area-link {\r\n  display: block;\r\n  background: #fff;\r\n  padding: 1rem 1.25rem;\r\n  text-align: center;\r\n  text-decoration: none;\r\n  font-weight: 700;\r\n  color: #0b3d91;\r\n  border-radius: 10px;\r\n  box-shadow: 0 6px 14px rgba(0,0,0,0.08);\r\n  transition: transform .18s, box-shadow .18s;\r\n}\r\n.area-link:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0,0,0,0.12); }\r\n.container-center { max-width:1100px; margin:0 auto; padding:1rem; text-align:center; }\r\n.search-row { margin-bottom: 1.2rem; }\r\n<\/style>\r\n\r\n<div class=\"container-center\">\r\n\r\n  <div class=\"area-grid\" id=\"areaGrid\">\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ce\u03bd\u2026<\/div>\r\n<\/div>\r\n\r\n<script>\r\n(async function(){\r\n  \/\/ Option A: fetch the JSON file you created with the Python script.\r\n  \/\/ Put the correct URL to postcode_to_area.json on your site:\r\n  const JSON_URL = \"\/blog\/wp-content\/uploads\/postcode_to_area.json\"; \/\/ <- adjust path\r\n\r\n  let mapping = {};\r\n  try {\r\n    const r = await fetch(JSON_URL);\r\n    if (!r.ok) throw new Error(\"Fetch failed\");\r\n    mapping = await r.json();\r\n  } catch (err) {\r\n    \/\/ Fallback: small inline example (you can replace by the full mapping manually)\r\n    mapping = {\r\n\"10434\": \"ZIP 10434 - (Athens)\",\r\n\"10441\": \"ZIP 10441 - Kolonos\",\r\n\"10443\": \"ZIP 10443 - Academy\",\r\n\"10447\": \"ZIP 10447 - Athens\",\r\n\"10558\": \"ZIP 10558 - Athens\",\r\n\"10676\": \"ZIP 10676 - Evangelismos\",\r\n\"11141\": \"ZIP 11141 - (Athens)\",\r\n\"11475\": \"ZIP 11475 - Gyzi\",\r\n\"11476\": \"ZIP 11476 - Gyzi\",\r\n\"11525\": \"ZIP 11525 - Tennis\",\r\n\"11528\": \"ZIP 11528 - Michalakopoulou\",\r\n\"11853\": \"ZIP 11853 - Kato\",\r\n\"11855\": \"ZIP 11855 - Votanikos\",\r\n\"12043\": \"ZIP 12043 - Athens\",\r\n\"12135\": \"ZIP 12135 - Peristeri\",\r\n\"12243\": \"ZIP 12243 - tennis\",\r\n\"12351\": \"ZIP 12351 - Varvaras\",\r\n\"12461\": \"ZIP 12461 - Chaidari\",\r\n\"12462\": \"ZIP 12462 - tennis\",\r\n\"13121\": \"ZIP 13121 - N. Liosia-Palaitani\",\r\n\"13232\": \"ZIP 13232 - Petroupoli\",\r\n\"13561\": \"ZIP 13561 - Ag.Anarigroi\",\r\n\"13562\": \"Postal Code 13562 - Ag.Anarigroi\",\r\n\"14231\": \"Postal Code 14231 - Tennis\",\r\n\"14233\": \"Postal Code 14233 - Neapoleos\",\r\n\"14262\": \"Postal Code 14262 - Athens\",\r\n\"14342\": \"Postal Code 14342 - tennis\",\r\n\"15001\": \"Postal Code 15001 - Athens\",\r\n\"15123\": \"Postal Code 15123 - Maroussi-N.Filothei\",\r\n\"15125\": \"Postal Code 15125 - Maroussi-Paradisos\",\r\n\"15126\": \"Postal Code 15126 - Maroussi-N.Lesvos\",\r\n\"15127\": \"Postal Code 15127 - Melissia\",\r\n\"15231\": \"ZIP 15231 - Chalandri-Ag.Varvara\",\r\n\"15234\": \"ZIP 15234 - Chalandri\",\r\n\"15236\": \"ZIP 15236 - Penteli-N.Penteli\",\r\n\"15237\": \"ZIP 15237 - Filothei\",\r\n\"15238\": \"ZIP 15238 - Chalandri\",\r\n\"15341\": \"ZIP 15341 - Ag.Paraskevii-N.Zoi\",\r\n\"15342\": \"ZIP 15342 - Ag.Paraskevii-Agianni\",\r\n\"15343\": \"ZIP 15343 - Ag.Paraskevii-Pefkaki\",\r\n\"15344\": \"ZIP 15344 - Anthousa\",\r\n\"15349\": \"Postal Code 15349 - Anthousa\",\r\n\"15351\": \"Postal Code 15351 - Pallini\",\r\n\"15354\": \"Postal Code 15354 - Nera\",\r\n\"15451\": \"Postal Code 15451 - Tennis\",\r\n\"15452\": \"Postal Code 15452 - Psychiko-Ag.Dimitrios\",\r\n\"15562\": \"Postal Code 15562 - Courts\",\r\n\"15669\": \"Postal Code 15669 - Papagou\",\r\n\"15771\": \"Postal Code 15771 - Ilisia\",\r\n\"15772\": \"Postal Code 15772 - Ilisia\",\r\n\"15773\": \"Postal Code 15773 - tennis\",\r\n\"15780\": \"ZIP 15780 - Tennis\",\r\n\"16122\": \"ZIP 16122 - Kaisariani-A.Kaisari\",\r\n\"16232\": \"ZIP 16232 - Byronas\",\r\n\"16233\": \"ZIP 16233 - Pigi\",\r\n\"16341\": \"ZIP 16341 - Ilioupoli-K.Ilioupoli\",\r\n\"16342\": \"ZIP 16342 - Ilioupoli-Police\",\r\n\"16344\": \"ZIP 16344 - Ilioup\",\r\n\"16346\": \"ZIP 16346 - Ilioupoli-K.Ilioupoli\",\r\n\"16451\": \"ZIP 16451 - Argyroupoli\",\r\n\"16452\": \"ZIP 16452 - Argyroupoli\",\r\n\"16671\": \"ZIP 16671 - Vouliag.-M.Kavouri\",\r\n\"16672\": \"ZIP 16672 - Vari\",\r\n\"16673\": \"ZIP 16673 - Voula\",\r\n\"16674\": \"ZIP 16674 - Glyfada\",\r\n\"16675\": \"ZIP 16675 - Glyfada\",\r\n\"16701\": \"ZIP 16701 - Athens\",\r\n\"16777\": \"ZIP 16777 - Elliniko-Ag.Paraskevi\",\r\n\"17122\": \"ZIP 17122 - N.Smyrna\",\r\n\"17124\": \"ZIP 17124 - N.Smyrna\",\r\n\"17341\": \"ZIP 17341 - Aghios Dimitrios\",\r\n\"17455\": \"ZIP Code 17455 - Alimos-Kalamaki\",\r\n\"17456\": \"ZIP Code 17456 - Alimos-Customs\",\r\n\"17561\": \"ZIP Code 17561 - P.Faliro\",\r\n\"17562\": \"ZIP Code 17562 - P.Faliro\",\r\n\"17676\": \"ZIP Code 17676 - Kallithea-Pl.Kallithea\",\r\n\"17778\": \"ZIP Code 17778 - Tavros\",\r\n\"18233\": \"ZIP Code 18233 - Aghios Ioannis Rentis\",\r\n\"18344\": \"ZIP Code 18344 - Moschatou\",\r\n\"18454\": \"ZIP Code 18454 - Khomata\",\r\n\"18533\": \"ZIP Code 18533 - Piraeus-Kastella\",\r\n\"18534\": \"ZIP Code 18534 - Piraeus-Pl.Alexander\",\r\n\"18537\": \"ZIP Code 18537 - Piraeus-Ag.Nikolaos\",\r\n\"18538\": \"ZIP Code 18538 - Piraeus-Chatzikiriakou\",\r\n\"18541\": \"ZIP Code 18541 - Apollonos\",\r\n\"18758\": \"ZIP Code 18758 - Keratsiniou\",\r\n\"19002\": \"ZIP Code 19002 - Paiania\",\r\n\"19400\": \"ZIP Code 19400 - Koropi-Karellas\"\r\n};\r\n    console.warn(\"Could not load postcode_to_area.json:\", err);\r\n  }\r\n\r\n  const container = document.getElementById(\"areaGrid\");\r\n  container.innerHTML = \"\";\r\n\r\n  \/\/ Build links sorted by numeric postcode\r\n  const keys = Object.keys(mapping).sort((a,b)=>parseInt(a,10)-parseInt(b,10));\r\n  for (const pc of keys) {\r\n    const title = mapping[pc];\r\n    \/\/ URL: category page path used in your site (adjust if needed)\r\n    const href = `\/blog\/category\/tennis-courts-athens\/tk-${pc}\/`;\r\n    const a = document.createElement(\"a\");\r\n    a.href = href;\r\n    a.className = \"area-link\";\r\n    a.textContent = title;\r\n    container.appendChild(a);\r\n  }\r\n\r\n  \/\/ search: jump to category if exact postcode typed\r\n  document.getElementById(\"btnSearch\").addEventListener(\"click\", ()=>{\r\n    const v = document.getElementById(\"postcodeSearch\").value.replace(\/\\s+\/g,'');\r\n    if (!v) return;\r\n    if (mapping[v]) {\r\n      window.location.href = `\/blog\/category\/tennis-courts-athens\/tk-${v}\/`;\r\n    } else {\r\n      alert(\"Post code not added yet: \" + v);\r\n    }\r\n  });\r\n})();\r\n<\/script>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ce\u03bd\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3782","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/pages\/3782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/comments?post=3782"}],"version-history":[{"count":6,"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/pages\/3782\/revisions"}],"predecessor-version":[{"id":3901,"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/pages\/3782\/revisions\/3901"}],"wp:attachment":[{"href":"https:\/\/tennisradar.gr\/blog\/wp-json\/wp\/v2\/media?parent=3782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}