{"id":1571,"date":"2025-09-02T10:16:27","date_gmt":"2025-09-02T08:16:27","guid":{"rendered":"https:\/\/oplevstruer.dk\/?page_id=1571"},"modified":"2026-10-05T17:00:14","modified_gmt":"2026-10-05T15:00:14","slug":"oplevelser","status":"publish","type":"page","link":"https:\/\/oplevstruer.dk\/en\/oplevelser\/","title":{"rendered":"Experiences"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1571\" class=\"elementor elementor-1571\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d05e4ef e-flex e-con-boxed e-con e-parent\" data-id=\"d05e4ef\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72e26cd elementor-widget elementor-widget-html\" data-id=\"72e26cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n\/* ============================================================\r\n   OPLEV STRUER \u2013 OPLEVELSER (lokale oplevelser hos medlemmerne)\r\n   S\u00c5DAN RETTER DU (vises ikke p\u00e5 hjemmesiden):\r\n\r\n   Siden: Sider \u2192 \"Oplevelser\" \u2192 Rediger med Elementor\r\n   \u2192 klik p\u00e5 denne HTML-widget.\r\n   Hver del er m\u00e6rket med data-ret-her=\"...\" \u2013 s\u00f8g efter det.\r\n   Ret KUN teksten mellem tags. Tryk \"Opdater\" og ryd LiteSpeed-cachen.\r\n\r\n   OPLEVELSERNE HENTES AUTOMATISK:\r\n      Du opretter, retter og sletter begivenheder pr\u00e6cis som f\u00f8r\r\n      i eventkalenderen (Begivenheder \u2192 Tilf\u00f8j ny).\r\n      Siden viser selv alle kommende begivenheder \u2013 den n\u00e6rmeste\r\n      stort \u00f8verst. Overst\u00e5ede forsvinder af sig selv.\r\n\r\n   KATEGORI-KNAPPERNE:\r\n      Laves automatisk ud fra de kategorier, der er sat p\u00e5 de\r\n      KOMMENDE begivenheder. Ny kategori = ny knap. Omd\u00f8bt kategori\r\n      = knappen skifter navn. Ingen kommende begivenheder i en\r\n      kategori = knappen skjules.\r\n\r\n   BEGIVENHEDER OVER FLERE DAGE:\r\n      Opret dem som du plejer (\u00e9n pr. dag med samme titel, en serie,\r\n      eller \u00e9n begivenhed der slutter en senere dag).\r\n      Dage med samme titel, der ligger lige efter hinanden,\r\n      samles automatisk til \u00e9t kort, fx \"L\u00f8rdag 10. \u2013 s\u00f8ndag 11. oktober\".\r\n\r\n   KNAPPEN \"SKRIV TIL OS\":\r\n      \u00c5bner mailprogrammet OG kopierer mailadressen.\r\n      Skifter I mailadresse, s\u00e5 ret den i scriptet nederst\r\n      ( var adresse = '...' ).\r\n\r\n   DEN LANGE TEKST NEDERST (fold-ud, m\u00e6rket \"OM OPLEVELSER\"):\r\n      Ligger der for Googles skyld. Ret frit i teksten.\r\n\r\n   R\u00f8r ikke ved resten af style-delen \u2013 den styrer udseendet.\r\n   Er du i tvivl: send koden til Claude og skriv hvad der skal \u00e6ndres.\r\n   ============================================================ *\/\r\n\r\n  .oso{font-family:inherit; color:#3b1640;}\r\n  .oso *{box-sizing:border-box;}\r\n\r\n  .oso-top{background:#6b2a6d; color:#fff; border-radius:0 0 28px 28px; padding:62px 24px 52px; text-align:center;}\r\n  .oso-top small{display:block; letter-spacing:.3em; font-size:12px; color:#f6c6f2; text-transform:uppercase;}\r\n  .oso .oso-top h1{margin:10px 0 14px; font-size:clamp(30px,5vw,46px); line-height:1.15; color:#fff; font-weight:700;}\r\n  .oso .oso-top p{max-width:660px; margin:0 auto 26px; line-height:1.6; font-size:17px; color:#fff; opacity:.95;}\r\n  .oso .oso-b{display:inline-block; margin:5px; padding:13px 26px; border-radius:30px; font-weight:700; font-size:15px;\r\n    text-decoration:none; cursor:pointer; transition:background .2s, color .2s, transform .2s;}\r\n  .oso .oso-b1{background:#c9a24a; color:#3a0a10; border:2px solid #c9a24a;}\r\n  .oso .oso-b1:hover{background:#e9c873; border-color:#e9c873; color:#3a0a10; transform:translateY(-2px);}\r\n  .oso .oso-b2{background:transparent; color:#fff; border:2px solid #fff;}\r\n  .oso .oso-b2:hover{background:#fff; color:#6b2a6d;}\r\n\r\n  .oso-w{max-width:1160px; margin:0 auto; padding:0 24px;}\r\n  .oso-liste{scroll-margin-top:120px;}\r\n\r\n  .oso-chips{display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin:34px 0 26px;}\r\n  .oso .oso-c{padding:9px 18px; border-radius:30px; border:2px solid #e6d6e4; background:#fff; font-weight:700; font-size:14px;\r\n    color:#6b2a6d; cursor:pointer; font-family:inherit; line-height:1.2; transition:background .2s, border-color .2s, color .2s;}\r\n  .oso .oso-c:hover{border-color:#8e2a8c;}\r\n  .oso .oso-c.on{background:#8e2a8c; border-color:#8e2a8c; color:#fff;}\r\n\r\n  .oso .oso-feat{display:grid; grid-template-columns:1.1fr 1fr; background:#f7f0f7; border-radius:20px; overflow:hidden;\r\n    margin-bottom:24px; text-decoration:none; color:inherit; transition:box-shadow .25s;}\r\n  .oso .oso-feat:hover{box-shadow:0 14px 30px rgba(80,20,80,.16);}\r\n  .oso-fimg{min-height:320px; background:#8e2a8c center\/cover no-repeat;}\r\n  .oso-fi{padding:32px;}\r\n  .oso-tag{display:inline-block; background:#c9a24a; color:#3a0a10; font-weight:700; font-size:12px; letter-spacing:.1em;\r\n    padding:5px 12px; border-radius:20px; text-transform:uppercase;}\r\n  .oso .oso-fi h2{font-size:clamp(22px,3vw,30px); margin:14px 0 10px; color:#3b1640; font-weight:700; line-height:1.2;}\r\n  .oso-meta{color:#6b5a6e; font-size:15px; line-height:1.7;}\r\n  .oso-meta div{display:flex; gap:8px;}\r\n  .oso .oso-fi p{color:#5b4a5e; line-height:1.6; margin:14px 0;}\r\n  .oso-lnk{color:#8e2a8c; font-weight:700;}\r\n\r\n  .oso-g{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}\r\n  .oso .oso-k{display:block; border-radius:18px; overflow:hidden; box-shadow:0 8px 24px rgba(80,20,80,.10); background:#fff;\r\n    position:relative; text-decoration:none; color:inherit; transition:transform .25s, box-shadow .25s;}\r\n  .oso .oso-k:hover{transform:translateY(-4px); box-shadow:0 14px 30px rgba(80,20,80,.16);}\r\n  .oso-kimg{height:190px; background:#8e2a8c center\/cover no-repeat;}\r\n  .oso-d{position:absolute; top:14px; left:14px; background:#fff; border-radius:12px; padding:6px 12px; text-align:center;\r\n    font-weight:700; line-height:1.1; box-shadow:0 4px 12px rgba(0,0,0,.15);}\r\n  .oso-d span{display:block; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#3b1640;}\r\n  .oso-d b{display:block; font-size:22px; color:#8e2a8c;}\r\n  .oso-ki{padding:18px 20px 22px;}\r\n  .oso .oso-ki h3{margin:0 0 8px; font-size:19px; color:#3b1640; font-weight:700; line-height:1.25;}\r\n  .oso-ki .oso-meta{font-size:14px;}\r\n\r\n  .oso-tom{border:2px dashed #e6d6e4; border-radius:18px; display:flex; flex-direction:column; align-items:center;\r\n    justify-content:center; text-align:center; padding:28px 22px; color:#6b5a6e; font-size:15px; line-height:1.6; min-height:200px;}\r\n  .oso .oso-tom b{color:#3b1640; font-size:17px;}\r\n  .oso .oso-mail{margin-top:10px; background:none; border:0; padding:0; font:inherit; color:#8e2a8c; font-weight:700; cursor:pointer;\r\n    text-decoration:none;}\r\n  .oso-besked{min-height:20px; margin-top:8px; font-size:13px; font-weight:700; color:#8e2a8c; opacity:0; transition:opacity .3s;}\r\n  .oso-besked.vis{opacity:1;}\r\n  .oso-ingen{text-align:center; padding:20px 0 26px; color:#6b5a6e; font-size:17px;}\r\n\r\n  .oso-bund{display:grid; grid-template-columns:1fr 1fr; gap:20px; margin:44px 0 30px;}\r\n  .oso-bx{background:#f7f0f7; border-radius:18px; padding:26px;}\r\n  .oso .oso-bx h3{margin:0 0 8px; color:#3b1640; font-size:20px; font-weight:700;}\r\n  .oso .oso-bx p{margin:0 0 14px; color:#5b4a5e; line-height:1.5;}\r\n  .oso .oso-ob{display:inline-block; margin:4px 6px 4px 0; padding:10px 20px; border-radius:30px; font-weight:700; font-size:14px;\r\n    text-decoration:none; border:2px solid #8e2a8c; color:#8e2a8c; background:#fff; transition:background .2s, color .2s;}\r\n  .oso .oso-ob:hover{background:#8e2a8c; color:#fff;}\r\n\r\n  .oso-om{border-top:1px solid #e6d6e4; border-bottom:1px solid #e6d6e4; margin-bottom:60px;}\r\n  .oso-om summary{list-style:none; cursor:pointer; padding:16px 30px 16px 0; position:relative; font-weight:700; font-size:16px; color:#3b1640;}\r\n  .oso-om summary::-webkit-details-marker{display:none;}\r\n  .oso-om summary::after{content:\"+\"; position:absolute; right:4px; top:50%; transform:translateY(-50%); font-size:22px; color:#8e2a8c; font-weight:400;}\r\n  .oso-om[open] summary::after{content:\"\u2013\";}\r\n  .oso .oso-om h2{font-size:20px; margin:6px 0 10px; color:#3b1640; font-weight:700;}\r\n  .oso .oso-om p{margin:0 0 14px; font-size:15px; line-height:1.7; color:#5b4a5e;}\r\n\r\n  @media (max-width:1024px){\r\n    .oso-g{grid-template-columns:repeat(2,1fr);}\r\n  }\r\n  @media (max-width:767px){\r\n    .oso .oso-feat{grid-template-columns:1fr;}\r\n    .oso-fimg{min-height:220px;}\r\n    .oso-fi{padding:22px;}\r\n    .oso-g{grid-template-columns:1fr;}\r\n    .oso-bund{grid-template-columns:1fr;}\r\n    .oso-chips{margin:26px 0 20px;}\r\n  }\r\n  @media (max-width:480px){\r\n    .oso-top{padding:50px 20px 42px;}\r\n    .oso .oso-top .oso-b{display:block; margin:8px auto; max-width:320px;}\r\n  }\r\n<\/style>\r\n\r\n<div class=\"oso\">\r\n\r\n  <div class=\"oso-top\" data-ret-her=\"TOP\">\r\n    <small>Oplev Struer<\/small>\r\n    <h1>Lokale oplevelser hos vores medlemmer<\/h1>\r\n    <p>Her finder du lokale oplevelser i Struer \u2013 kundeaftener, events og arrangementer hos Oplev Struers medlemmer: byens butikker, caf\u00e9er og virksomheder. Samlet \u00e9t sted, s\u00e5 du altid ved, hvad der sker i Lydens By.<\/p>\r\n    <a class=\"oso-b oso-b1\" href=\"#kommende-oplevelser\">Se kommende oplevelser<\/a>\r\n    <a class=\"oso-b oso-b2\" href=\"https:\/\/oplevstruer.dk\/kig-tilbage-paa-oplevelserne\/\">Kig tilbage p\u00e5 oplevelserne<\/a>\r\n  <\/div>\r\n\r\n  <div class=\"oso-w oso-liste\" id=\"kommende-oplevelser\">\r\n    <div class=\"oso-chips\" id=\"osoChips\"><\/div>\r\n    <div id=\"osoListe\">\r\n      <p class=\"oso-ingen\">Henter oplevelser \u2026<\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"oso-w\">\r\n    <div class=\"oso-bund\">\r\n      <div class=\"oso-bx\" data-ret-her=\"KALENDER-BOKS\">\r\n        <h3>\ud83d\udcc6 F\u00e5 oplevelserne i din kalender<\/h3>\r\n        <p>Abonn\u00e9r, s\u00e5 nye lokale oplevelser automatisk dukker op i kalenderen p\u00e5 din telefon eller computer.<\/p>\r\n        <a class=\"oso-ob\" href=\"https:\/\/www.google.com\/calendar\/render?cid=webcal%3A%2F%2Foplevstruer.dk%2F%3Fpost_type%3Dtribe_events%26ical%3D1%26eventDisplay%3Dlist\" target=\"_blank\" rel=\"noopener\">Google Kalender<\/a>\r\n        <a class=\"oso-ob\" href=\"webcal:\/\/oplevstruer.dk\/?post_type=tribe_events&amp;ical=1&amp;eventDisplay=list\">iPhone \/ Outlook<\/a>\r\n      <\/div>\r\n      <div class=\"oso-bx\" data-ret-her=\"KIG TILBAGE-BOKS\">\r\n        <h3>\ud83d\udcf8 Kig tilbage<\/h3>\r\n        <p>Se billeder og stemning fra de oplevelser, vi har holdt i byen.<\/p>\r\n        <a class=\"oso-ob\" href=\"https:\/\/oplevstruer.dk\/kig-tilbage-paa-oplevelserne\/\">Se tidligere oplevelser<\/a>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <details class=\"oso-om\" data-ret-her=\"OM OPLEVELSER\">\r\n      <summary>Om lokale oplevelser i Struer<\/summary>\r\n      <h2>Lokale oplevelser i Struer hos vores medlemmer<\/h2>\r\n      <p>Her p\u00e5 siden finder du lokale oplevelser, events og sev\u00e6rdigheder i Struer. Vi har samlet de begivenheder, som Oplev Struers medlemmer st\u00e5r bag, s\u00e5 du altid kan se, hvad der sker i Lydens By.<\/p>\r\n      <p>Det er her, du finder alt fra kundeaftener og workshops til lokale koncerter og pop-up events ved Limfjorden. Vores medlemmer \u2013 byens butikker, restauranter, caf\u00e9er og servicevirksomheder \u2013 g\u00f8r sig umage for at skabe liv i byen, og denne oversigt giver dig direkte adgang til deres mange lokale oplevelser.<\/p>\r\n      <p>Oplev den s\u00e6rlige stemning hos byens erhvervsdrivende, hvor der er fokus p\u00e5 det n\u00e6re og de gode oplevelser i hverdagen. Vi opdaterer oversigten l\u00f8bende med nye lokale begivenheder, s\u00e5 du kan planl\u00e6gge din n\u00e6ste tur i byen \u2013 uanset om du bor i Struer eller er p\u00e5 bes\u00f8g.<\/p>\r\n      <h2>St\u00f8t de lokale initiativer og oplevelser i Struer<\/h2>\r\n      <p>N\u00e5r du deltager i medlemmernes events, st\u00f8tter du direkte det lokale f\u00e6llesskab og erhvervsliv. Det er de lokale oplevelser ved Limfjorden, der g\u00f8r Lydens By til en levende og attraktiv by at bes\u00f8ge.<\/p>\r\n      <p>Der er altid noget nyt at opdage hos vores mange medlemmer, og vi gl\u00e6der os til at se dig til de mange lokale arrangementer i byen.<\/p>\r\n    <\/details>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<script data-no-optimize=\"1\">\r\n(function(){\r\n  var adresse = 'info@struerhandel.dk';\r\n  var API = '\/wp-json\/tribe\/events\/v1\/events';\r\n  var chipsEl = document.getElementById('osoChips');\r\n  var listeEl = document.getElementById('osoListe');\r\n  if (!chipsEl || !listeEl) return;\r\n\r\n  var DAGE = ['s\u00f8ndag','mandag','tirsdag','onsdag','torsdag','fredag','l\u00f8rdag'];\r\n  var MDR = ['januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december'];\r\n  var MDRK = ['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'];\r\n  var grupper = [], valgt = 'alle';\r\n\r\n  function rens(html){\r\n    var d = document.createElement('div');\r\n    d.innerHTML = String(html || '').replace(\/<(br|\\\/p|\\\/div|\\\/li)[^>]*>\/gi, ' ');\r\n    var t = (d.textContent || '').replace(\/\\s+\/g, ' ').trim();\r\n    try { t = t.normalize('NFKC'); } catch(e){}\r\n    return t;\r\n  }\r\n  function esc(s){\r\n    return String(s).replace(\/[&<>\"']\/g, function(c){ return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]; });\r\n  }\r\n  function lokal(s){\r\n    var m = String(s).match(\/(\\d+)-(\\d+)-(\\d+)[ T](\\d+):(\\d+)\/);\r\n    return m ? new Date(+m[1], m[2]-1, +m[3], +m[4], +m[5]) : new Date(s);\r\n  }\r\n  function utc(s){ return new Date(String(s).replace(' ', 'T') + 'Z'); }\r\n  function dag0(d){ return new Date(d.getFullYear(), d.getMonth(), d.getDate()); }\r\n  function dagsForskel(a, b){ return Math.round((dag0(b) - dag0(a)) \/ 86400000); }\r\n  function stor(s){ return s.charAt(0).toUpperCase() + s.slice(1); }\r\n  function kl(d){ return d.getHours() + '.' + ('0'+d.getMinutes()).slice(-2); }\r\n  function noegle(t){ return rens(t).toLowerCase().replace(\/[^a-z0-9\u00e6\u00f8\u00e5]+\/g, ''); }\r\n\r\n  function datoTekst(g){\r\n    var a = g.start, b = g.slut;\r\n    if (dagsForskel(a, b) === 0) return stor(DAGE[a.getDay()]) + ' ' + a.getDate() + '. ' + MDR[a.getMonth()];\r\n    if (a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear())\r\n      return stor(DAGE[a.getDay()]) + ' ' + a.getDate() + '. \u2013 ' + DAGE[b.getDay()] + ' ' + b.getDate() + '. ' + MDR[b.getMonth()];\r\n    return stor(DAGE[a.getDay()]) + ' ' + a.getDate() + '. ' + MDR[a.getMonth()] + ' \u2013 ' + DAGE[b.getDay()] + ' ' + b.getDate() + '. ' + MDR[b.getMonth()];\r\n  }\r\n  function tidTekst(g){\r\n    if (g.dage.every(function(x){ return x.helDag; })) return 'Hele dagen';\r\n    var tider = g.dage.map(function(x){ return x.helDag ? 'hele dagen' : kl(x.start) + ' \u2013 ' + kl(x.slut); });\r\n    var ens = tider.every(function(t){ return t === tider[0]; });\r\n    if (g.dage.length === 1 && dagsForskel(g.dage[0].start, g.dage[0].slut) > 0)\r\n      return 'Fra kl. ' + kl(g.dage[0].start) + ' til kl. ' + kl(g.dage[0].slut);\r\n    if (ens) return 'Kl. ' + tider[0];\r\n    return g.dage.map(function(x, i){ return stor(DAGE[x.start.getDay()]).slice(0,3) + ' ' + tider[i]; }).join(' \u00b7 ');\r\n  }\r\n  function maerke(g){\r\n    var n = dagsForskel(new Date(), g.start);\r\n    if (new Date() >= g.start) return 'I gang nu';\r\n    if (n <= 0) return 'N\u00e6ste oplevelse \u00b7 i dag';\r\n    if (n === 1) return 'N\u00e6ste oplevelse \u00b7 i morgen';\r\n    return 'N\u00e6ste oplevelse \u00b7 om ' + n + ' dage';\r\n  }\r\n  function badge(g){\r\n    var a = g.start, b = g.slut, d = a.getDate() + '';\r\n    if (dagsForskel(a, b) > 0 && a.getMonth() === b.getMonth()) d = a.getDate() + '\u2013' + b.getDate();\r\n    return '<div class=\"oso-d\"><span>' + MDRK[a.getMonth()] + '<\/span><b>' + d + '<\/b><\/div>';\r\n  }\r\n  function sted(g){\r\n    var v = g.sted;\r\n    if (!v || !v.venue) return '';\r\n    var t = rens(v.venue);\r\n    if (v.address) t += ', ' + rens(v.address);\r\n    return '<div><span>\ud83d\udccd<\/span><span>' + esc(t) + '<\/span><\/div>';\r\n  }\r\n\r\n  function lavGrupper(events){\r\n    var nu = new Date(), ud = [];\r\n    events.forEach(function(e){\r\n      if (e.hide_from_listings) return;\r\n      var slutUtc = utc(e.utc_end_date);\r\n      if (slutUtc < nu) return;\r\n      var billede = '';\r\n      if (e.image && e.image.url){\r\n        var s = e.image.sizes || {};\r\n        billede = (s.medium_large && s.medium_large.url) || e.image.url;\r\n      }\r\n      var dag = { start: lokal(e.start_date), slut: lokal(e.end_date), helDag: !!e.all_day };\r\n      var k = noegle(e.title), sidste = null;\r\n      for (var i = ud.length - 1; i >= 0; i--){\r\n        if (ud[i].noegle === k && dagsForskel(ud[i].slut, dag.start) <= 1){ sidste = ud[i]; break; }\r\n      }\r\n      if (sidste){\r\n        sidste.dage.push(dag);\r\n        if (dag.slut > sidste.slut) sidste.slut = dag.slut;\r\n        (e.categories || []).forEach(function(c){ if (!sidste.kat[c.slug]) sidste.kat[c.slug] = rens(c.name); });\r\n        return;\r\n      }\r\n      var kat = {};\r\n      (e.categories || []).forEach(function(c){ kat[c.slug] = rens(c.name); });\r\n      ud.push({\r\n        noegle: k, titel: rens(e.title), url: e.url, billede: billede,\r\n        tekst: rens(e.description), sted: e.venue, kat: kat,\r\n        start: dag.start, slut: dag.slut, dage: [dag]\r\n      });\r\n    });\r\n    return ud;\r\n  }\r\n\r\n  function stor_kort(g){\r\n    var tekst = g.tekst.length > 180 ? g.tekst.slice(0, 177).replace(\/\\s+\\S*$\/, '') + ' \u2026' : g.tekst;\r\n    return '<a class=\"oso-feat\" href=\"' + esc(g.url) + '\">' +\r\n      '<div class=\"oso-fimg\"' + (g.billede ? ' style=\"background-image:url(\\'' + esc(g.billede) + '\\')\"' : '') + '><\/div>' +\r\n      '<div class=\"oso-fi\"><span class=\"oso-tag\">' + maerke(g) + '<\/span>' +\r\n      '<h2>' + esc(g.titel) + '<\/h2><div class=\"oso-meta\">' +\r\n      '<div><span>\ud83d\udcc5<\/span><span>' + datoTekst(g) + '<\/span><\/div>' +\r\n      '<div><span>\ud83d\udd59<\/span><span>' + tidTekst(g) + '<\/span><\/div>' + sted(g) + '<\/div>' +\r\n      (tekst ? '<p>' + esc(tekst) + '<\/p>' : '') +\r\n      '<span class=\"oso-lnk\">L\u00e6s mere \u2192<\/span><\/div><\/a>';\r\n  }\r\n  function kort(g){\r\n    return '<a class=\"oso-k\" href=\"' + esc(g.url) + '\">' +\r\n      '<div class=\"oso-kimg\"' + (g.billede ? ' style=\"background-image:url(\\'' + esc(g.billede) + '\\')\"' : '') + '><\/div>' + badge(g) +\r\n      '<div class=\"oso-ki\"><h3>' + esc(g.titel) + '<\/h3><div class=\"oso-meta\">' +\r\n      '<div><span>\ud83d\udcc5<\/span><span>' + datoTekst(g) + '<\/span><\/div>' +\r\n      '<div><span>\ud83d\udd59<\/span><span>' + tidTekst(g) + '<\/span><\/div>' + sted(g) + '<\/div><\/div><\/a>';\r\n  }\r\n  function skrivTilOs(){\r\n    return '<div class=\"oso-tom\"><b>Har din butik et arrangement?<\/b>' +\r\n      '<span>Vi viser gerne medlemmernes lokale oplevelser her.<\/span>' +\r\n      '<a class=\"oso-mail\" href=\"mailto:' + adresse + '\">Skriv til os \u2192<\/a>' +\r\n      '<div class=\"oso-besked\" role=\"status\" aria-live=\"polite\"><\/div><\/div>';\r\n  }\r\n\r\n  function visChips(){\r\n    var alle = {};\r\n    grupper.forEach(function(g){ for (var s in g.kat) alle[s] = g.kat[s]; });\r\n    var slugs = Object.keys(alle).sort(function(a, b){ return alle[a].localeCompare(alle[b], 'da'); });\r\n    if (valgt !== 'alle' && !alle[valgt]) valgt = 'alle';\r\n    if (!slugs.length){ chipsEl.innerHTML = ''; return; }\r\n    var h = '<button type=\"button\" class=\"oso-c' + (valgt === 'alle' ? ' on' : '') + '\" data-kat=\"alle\">Alle<\/button>';\r\n    slugs.forEach(function(s){\r\n      h += '<button type=\"button\" class=\"oso-c' + (valgt === s ? ' on' : '') + '\" data-kat=\"' + esc(s) + '\">' + esc(alle[s]) + '<\/button>';\r\n    });\r\n    chipsEl.innerHTML = h;\r\n  }\r\n  function visListe(){\r\n    var liste = grupper.filter(function(g){ return valgt === 'alle' || g.kat[valgt]; });\r\n    if (!liste.length){\r\n      listeEl.innerHTML = '<p class=\"oso-ingen\">Der er ingen kommende lokale oplevelser lige nu \u2013 kig forbi igen snart.<\/p>' +\r\n        '<div class=\"oso-g\">' + skrivTilOs() + '<\/div>';\r\n      return;\r\n    }\r\n    var h = stor_kort(liste[0]) + '<div class=\"oso-g\">';\r\n    for (var i = 1; i < liste.length; i++) h += kort(liste[i]);\r\n    h += skrivTilOs() + '<\/div>';\r\n    listeEl.innerHTML = h;\r\n  }\r\n\r\n  chipsEl.addEventListener('click', function(ev){\r\n    var b = ev.target.closest('.oso-c');\r\n    if (!b) return;\r\n    valgt = b.getAttribute('data-kat');\r\n    visChips(); visListe();\r\n  });\r\n\r\n  function gammelKopi(){\r\n    var f = document.createElement('textarea');\r\n    f.value = adresse; f.setAttribute('readonly',''); f.style.position = 'fixed'; f.style.opacity = '0';\r\n    document.body.appendChild(f); f.select();\r\n    try { document.execCommand('copy'); } catch(e){}\r\n    document.body.removeChild(f);\r\n  }\r\n  listeEl.addEventListener('click', function(ev){\r\n    var knap = ev.target.closest('.oso-mail');\r\n    if (!knap) return;\r\n    if (navigator.clipboard && window.isSecureContext){\r\n      navigator.clipboard.writeText(adresse).catch(gammelKopi);\r\n    } else { gammelKopi(); }\r\n    var besked = knap.parentNode.querySelector('.oso-besked');\r\n    if (besked){\r\n      besked.textContent = 'Mailadressen ' + adresse + ' er kopieret \u2013 s\u00e6t den ind i din mail.';\r\n      besked.classList.add('vis');\r\n      clearTimeout(besked.t);\r\n      besked.t = setTimeout(function(){ besked.classList.remove('vis'); }, 8000);\r\n    }\r\n  });\r\n\r\n  function fejl(){\r\n    listeEl.innerHTML = '<p class=\"oso-ingen\">Oplevelserne kunne ikke hentes lige nu. ' +\r\n      '<a class=\"oso-lnk\" href=\"\/events\/\">Se dem i kalenderen her \u2192<\/a><\/p>';\r\n  }\r\n\r\n  var fra = new Date(Date.now() - 21 * 86400000);\r\n  var fraTekst = fra.getFullYear() + '-' + ('0'+(fra.getMonth()+1)).slice(-2) + '-' + ('0'+fra.getDate()).slice(-2) + ' 00:00:00';\r\n  var samlet = [];\r\n  function hent(side){\r\n    var url = API + '?per_page=50&page=' + side + '&start_date=' + encodeURIComponent(fraTekst);\r\n    fetch(url, { credentials: 'same-origin' })\r\n      .then(function(r){ if (!r.ok) throw new Error(r.status); return r.json(); })\r\n      .then(function(d){\r\n        samlet = samlet.concat(d.events || []);\r\n        if (d.total_pages && side < d.total_pages && side < 5){ hent(side + 1); return; }\r\n        samlet.sort(function(a, b){ return utc(a.utc_start_date) - utc(b.utc_start_date); });\r\n        grupper = lavGrupper(samlet);\r\n        visChips(); visListe();\r\n      })\r\n      .catch(function(){\r\n        if (side === 1) fejl();\r\n        else { grupper = lavGrupper(samlet); visChips(); visListe(); }\r\n      });\r\n  }\r\n  hent(1);\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Discover the best experiences in Struer and by the Limfjord. See attractions and events from our local members. Plan your visit here!<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":"","_tec_slr_enabled":"","_tec_slr_layout":""},"class_list":["post-1571","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oplevelser i Struer \u2013 Se hvad der sker i Lydens By<\/title>\n<meta name=\"description\" content=\"Find de bedste oplevelser i Struer og ved Limfjorden. Se sev\u00e6rdigheder og events hos vores lokale medlemmer. Planl\u00e6g dit bes\u00f8g her!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/oplevstruer.dk\/en\/oplevelser\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oplevelser\" \/>\n<meta property=\"og:description\" content=\"Find de bedste oplevelser i Struer og ved Limfjorden. Se sev\u00e6rdigheder og events hos vores lokale medlemmer. Planl\u00e6g dit bes\u00f8g her!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oplevstruer.dk\/en\/oplevelser\/\" \/>\n<meta property=\"og:site_name\" content=\"Oplev Struer\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/struershopping\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-05T15:00:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/oplevstruer.dk\/wp-content\/uploads\/Oplev-Struer.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/oplevelser\\\/\",\"url\":\"https:\\\/\\\/oplevstruer.dk\\\/oplevelser\\\/\",\"name\":\"Oplevelser i Struer \u2013 Se hvad der sker i Lydens By\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/#website\"},\"datePublished\":\"2025-09-02T08:16:27+00:00\",\"dateModified\":\"2026-10-05T15:00:14+00:00\",\"description\":\"Find de bedste oplevelser i Struer og ved Limfjorden. Se sev\u00e6rdigheder og events hos vores lokale medlemmer. Planl\u00e6g dit bes\u00f8g her!\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/oplevstruer.dk\\\/oplevelser\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/#website\",\"url\":\"https:\\\/\\\/oplevstruer.dk\\\/\",\"name\":\"Oplev Struer\",\"description\":\"Shopping - Turisme - Events - Oplevelser i Lydens By\",\"publisher\":{\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/oplevstruer.dk\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/#organization\",\"name\":\"Oplev Struer\",\"url\":\"https:\\\/\\\/oplevstruer.dk\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/oplevstruer.dk\\\/wp-content\\\/uploads\\\/Oplev-Struer.png\",\"contentUrl\":\"https:\\\/\\\/oplevstruer.dk\\\/wp-content\\\/uploads\\\/Oplev-Struer.png\",\"width\":1200,\"height\":675,\"caption\":\"Oplev Struer\"},\"image\":{\"@id\":\"https:\\\/\\\/oplevstruer.dk\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/struershopping\",\"https:\\\/\\\/www.instagram.com\\\/struershopping\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Experiences in Struer \u2013 See what's happening in The City of Sound","description":"Discover the best experiences in Struer and by the Limfjord. See attractions and events from our local members. Plan your visit here!","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:\/\/oplevstruer.dk\/en\/oplevelser\/","og_locale":"en_GB","og_type":"article","og_title":"Oplevelser","og_description":"Find de bedste oplevelser i Struer og ved Limfjorden. Se sev\u00e6rdigheder og events hos vores lokale medlemmer. Planl\u00e6g dit bes\u00f8g her!","og_url":"https:\/\/oplevstruer.dk\/en\/oplevelser\/","og_site_name":"Oplev Struer","article_publisher":"https:\/\/www.facebook.com\/struershopping","article_modified_time":"2026-10-05T15:00:14+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/oplevstruer.dk\/wp-content\/uploads\/Oplev-Struer.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/oplevstruer.dk\/oplevelser\/","url":"https:\/\/oplevstruer.dk\/oplevelser\/","name":"Experiences in Struer \u2013 See what's happening in The City of Sound","isPartOf":{"@id":"https:\/\/oplevstruer.dk\/#website"},"datePublished":"2025-09-02T08:16:27+00:00","dateModified":"2026-10-05T15:00:14+00:00","description":"Discover the best experiences in Struer and by the Limfjord. See attractions and events from our local members. Plan your visit here!","inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oplevstruer.dk\/oplevelser\/"]}]},{"@type":"WebSite","@id":"https:\/\/oplevstruer.dk\/#website","url":"https:\/\/oplevstruer.dk\/","name":"Experience Struer","description":"Shopping - Tourism - Events - Experiences in the City of Sound","publisher":{"@id":"https:\/\/oplevstruer.dk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/oplevstruer.dk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/oplevstruer.dk\/#organization","name":"Experience Struer","url":"https:\/\/oplevstruer.dk\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/oplevstruer.dk\/#\/schema\/logo\/image\/","url":"https:\/\/oplevstruer.dk\/wp-content\/uploads\/Oplev-Struer.png","contentUrl":"https:\/\/oplevstruer.dk\/wp-content\/uploads\/Oplev-Struer.png","width":1200,"height":675,"caption":"Oplev Struer"},"image":{"@id":"https:\/\/oplevstruer.dk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/struershopping","https:\/\/www.instagram.com\/struershopping\/"]}]}},"ticketed":false,"_links":{"self":[{"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/pages\/1571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/comments?post=1571"}],"version-history":[{"count":20,"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/pages\/1571\/revisions"}],"predecessor-version":[{"id":5172,"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/pages\/1571\/revisions\/5172"}],"wp:attachment":[{"href":"https:\/\/oplevstruer.dk\/en\/wp-json\/wp\/v2\/media?parent=1571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}