{"id":29,"date":"2026-02-22T12:08:06","date_gmt":"2026-02-22T12:08:06","guid":{"rendered":"https:\/\/baileandodancestudio.com\/?page_id=29"},"modified":"2026-06-02T21:07:35","modified_gmt":"2026-06-02T21:07:35","slug":"eventos-y-actuaciones","status":"publish","type":"page","link":"https:\/\/baileandodancestudio.com\/?page_id=29","title":{"rendered":"Eventos y Actuaciones"},"content":{"rendered":"\n<!-- ============================================================\n     WIDGET EVENTOS \u2014 BaileAndo Dance Studio\n     Pegar en Elementor > widget \"HTML\"\n     Requiere: The Events Calendar instalado y activo\n     Categor\u00edas a crear: actuacion | clase | evento | otro | destacado\n     ============================================================ -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;1,300;1,400&#038;family=Josefin+Sans:wght@300;400&#038;family=DM+Sans:wght@300;400&#038;display=swap\" rel=\"stylesheet\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/@tabler\/icons-webfont@2.44.0\/tabler-icons.min.css\">\n\n<style>\n.bae{--td:#1A3A34;--tm:#1D9E75;--tp:#9FE1CB;--bg:#F0FAF7;--bc:#fff;--tb:#3a5550;--tmut:#7aada0;--bdr:rgba(29,158,117,.18);font-family:'DM Sans',sans-serif;font-weight:300;background:var(--bg);padding:2.5rem 1.5rem 3.5rem;border-radius:16px}\n.bae-head{text-align:center;margin-bottom:2rem}\n.bae-eye{font-family:'Josefin Sans',sans-serif;font-weight:300;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--tm);margin:0 0 .4rem}\n.bae-h1{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:40px;line-height:1.1;color:var(--td);margin:0 0 .5rem}\n.bae-h1 em{font-style:italic;color:var(--tm)}\n.bae-sub{font-size:14px;color:var(--tmut);max-width:360px;margin:0 auto;line-height:1.6}\n.bae-filtros{display:flex;justify-content:center;gap:8px;margin-bottom:2rem;flex-wrap:wrap}\n.bae-f{font-family:'Josefin Sans',sans-serif;font-weight:300;font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:7px 18px;border-radius:999px;border:.5px solid var(--bdr);background:transparent;color:var(--tmut);cursor:pointer;transition:all .2s}\n.bae-f:hover{border-color:var(--tm);color:var(--tm)}\n.bae-f.on{background:var(--tm);border-color:var(--tm);color:#fff}\n.bae-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1.2rem}\n.bae-feat{grid-column:1\/-1;display:grid;grid-template-columns:1fr 1fr;border-radius:14px;overflow:hidden;border:.5px solid var(--bdr);background:var(--bc);transition:transform .2s}\n.bae-feat:hover{transform:translateY(-2px)}\n.bae-feat-img img{width:100%;height:100%;object-fit:cover;display:block}\n.bae-feat-noimg{background:#d4f0e5;display:flex;align-items:center;justify-content:center;min-height:200px}\n.bae-feat-noimg i{font-size:44px;color:rgba(255,255,255,.5)}\n.bae-feat-body{padding:1.6rem 1.4rem;display:flex;flex-direction:column;justify-content:center}\n.bae-badge{display:inline-block;font-family:'Josefin Sans',sans-serif;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--tm);border:.5px solid var(--tm);border-radius:999px;padding:3px 12px;margin-bottom:.7rem;width:fit-content}\n.bae-feat-tit{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:26px;line-height:1.2;color:var(--td);margin:0 0 .4rem}\n.bae-feat-tit em{font-style:italic;color:var(--tm)}\n.bae-feat-desc{font-size:14px;color:var(--tb);line-height:1.65;margin:0 0 1rem;font-weight:300}\n.bae-card{background:var(--bc);border-radius:14px;border:.5px solid var(--bdr);overflow:hidden;transition:transform .2s}\n.bae-card:hover{transform:translateY(-3px)}\n.bae-card-img img{width:100%;aspect-ratio:16\/9;object-fit:cover;display:block}\n.bae-card-noimg{aspect-ratio:16\/9;background:#e5f5ee;display:flex;align-items:center;justify-content:center}\n.bae-card-noimg i{font-size:32px;color:var(--tp)}\n.bae-card-body{padding:1rem 1.2rem 1.2rem}\n.bae-meta{display:flex;align-items:center;gap:10px;margin-bottom:.5rem}\n.bae-tag{font-family:'Josefin Sans',sans-serif;font-size:10px;letter-spacing:.16em;text-transform:uppercase;padding:3px 10px;border-radius:999px;background:#e5f7f0;color:#0F6E56}\n.bae-tag.actuacion{background:#f5e8f7;color:#6a2a7a}\n.bae-tag.clase{background:#fff5e0;color:#7a5000}\n.bae-tag.evento{background:#e6f1fb;color:#185FA5}\n.bae-tag.otro{background:#f1efe8;color:#5F5E5A}\n.bae-fechita{font-family:'Josefin Sans',sans-serif;font-size:11px;font-weight:300;color:var(--tmut);display:flex;align-items:center;gap:4px}\n.bae-card-tit{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:20px;line-height:1.2;color:var(--td);margin:0 0 .4rem}\n.bae-card-desc{font-size:13px;color:var(--tb);line-height:1.65;margin:0 0 .8rem;font-weight:300}\n.bae-info{display:flex;flex-direction:column;gap:5px;padding-top:.7rem;border-top:.5px solid var(--bdr)}\n.bae-row{display:flex;align-items:center;gap:6px;font-family:'Josefin Sans',sans-serif;font-size:12px;font-weight:300;color:var(--tmut);letter-spacing:.04em}\n.bae-row i{font-size:14px;flex-shrink:0}\n.bae-loading,.bae-empty{grid-column:1\/-1;text-align:center;padding:3rem;color:var(--tmut);font-family:'Cormorant Garamond',serif;font-size:18px;font-style:italic}\n@media(max-width:600px){.bae-feat{grid-template-columns:1fr}.bae-h1{font-size:30px}}\n<\/style>\n\n<div class=\"bae\">\n  <div class=\"bae-head\">\n    <p class=\"bae-eye\">Agenda &amp; Escenario<\/p>\n    <h2 class=\"bae-h1\">Eventos &amp; <em>Actuaciones<\/em><\/h2>\n    <p class=\"bae-sub\">Descubre nuestras pr\u00f3ximas fechas, espect\u00e1culos y clasees especiales<\/p>\n  <\/div>\n  <div class=\"bae-filtros\">\n    <button class=\"bae-f on\" data-tipo=\"todos\">Todos<\/button>\n    <button class=\"bae-f\" data-tipo=\"actuacion\">Actuaciones<\/button>\n    <button class=\"bae-f\" data-tipo=\"clase\">Clasees<\/button>\n    <button class=\"bae-f\" data-tipo=\"evento\">Eventos<\/button>\n    <button class=\"bae-f\" data-tipo=\"otro\">Otros<\/button>\n  <\/div>\n  <div id=\"bae-grid\" class=\"bae-grid\">\n    <p class=\"bae-loading\">Cargando eventos\u2026<\/p>\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n\n  var MESES_L = ['','enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre'];\n  var MESES_C = ['','ene','feb','mar','abr','may','jun','jul','ago','sep','oct','nov','dic'];\n  var ETIQUETAS = {\n    actuacion:{label:'Actuaci\u00f3n',cls:'actuacion'},\n    clase:   {label:'Clase',   cls:'clase'},\n    evento:   {label:'Evento',   cls:'evento'},\n    otro:     {label:'Otro',     cls:'otro'}\n  };\n\n  function fechaLarga(iso){\n    if(!iso) return '';\n    var d = new Date(iso);\n    var dias=['Domingo','Lunes','Martes','Mi\u00e9rcoles','Jueves','Viernes','S\u00e1bado'];\n    return dias[d.getDay()]+', '+d.getDate()+' de '+MESES_L[d.getMonth()+1]+' de '+d.getFullYear();\n  }\n  function fechaCorta(iso){\n    if(!iso) return '';\n    var d = new Date(iso);\n    return d.getDate()+' '+MESES_C[d.getMonth()+1]+' '+d.getFullYear();\n  }\n  function hora(iso){\n    if(!iso) return '';\n    var d = new Date(iso);\n    var h=d.getHours(), m=d.getMinutes();\n    if(h===0&&m===0) return '';\n    return (h<10?'0':'')+h+':'+(m<10?'0':'')+m+' h';\n  }\n  function strip(html){\n    var t=document.createElement('div'); t.innerHTML=html;\n    var s=(t.textContent||t.innerText||'').trim();\n    return s.length>130 ? s.slice(0,130)+'\u2026' : s;\n  }\n  function esc(s){ return (s||'').replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); }\n\n  function tipoCat(slugs){\n    var orden=['actuacion','clase','evento','otro'];\n    for(var i=0;i<orden.length;i++) if(slugs.indexOf(orden[i])>-1) return orden[i];\n    return 'otro';\n  }\n\n  function imgHtml(ev, grande){\n    var media = ev._embedded && ev._embedded['wp:featuredmedia'] && ev._embedded['wp:featuredmedia'][0];\n    if(media && media.source_url){\n      var cls = grande ? 'bae-feat-img' : 'bae-card-img';\n      return '<div class=\"'+cls+'\"><img decoding=\"async\" src=\"'+media.source_url+'\" alt=\"'+esc(ev.title.rendered)+'\" loading=\"lazy\"><\/div>';\n    }\n    var cls2 = grande ? 'bae-feat-noimg' : 'bae-card-noimg';\n    return '<div class=\"'+cls2+'\"><i class=\"ti ti-spotlight\"><\/i><\/div>';\n  }\n\n  function metaVal(ev, key){\n    \/\/ Los meta de The Events Calendar se exponen si est\u00e1n registrados\n    return (ev.meta && ev.meta[key]) ? ev.meta[key] : '';\n  }\n\n  function infoRows(startDate, lugar, grande){\n    var rows = '';\n    var h = grande ? hora(startDate) : hora(startDate);\n    if(h) rows += '<span class=\"bae-row\"><i class=\"ti ti-clock\"><\/i>'+h+'<\/span>';\n    if(lugar) rows += '<span class=\"bae-row\"><i class=\"ti ti-map-pin\"><\/i>'+esc(lugar)+'<\/span>';\n    return rows ? '<div class=\"bae-info\">'+rows+'<\/div>' : '';\n  }\n\n  function renderDestacado(ev, slugs, startDate, lugar){\n    return '<article class=\"bae-feat\" data-tipo=\"'+tipoCat(slugs)+' destacado\">'\n      + imgHtml(ev, true)\n      + '<div class=\"bae-feat-body\">'\n      +   '<span class=\"bae-badge\">Pr\u00f3ximo evento destacado<\/span>'\n      +   '<h3 class=\"bae-feat-tit\">'+ev.title.rendered+'<\/h3>'\n      +   '<p class=\"bae-feat-desc\">'+strip(ev.excerpt.rendered)+'<\/p>'\n      +   '<div class=\"bae-info\">'\n      +     '<span class=\"bae-row\"><i class=\"ti ti-calendar\"><\/i>'+fechaLarga(startDate)+'<\/span>'\n      +     (hora(startDate) ? '<span class=\"bae-row\"><i class=\"ti ti-clock\"><\/i>'+hora(startDate)+'<\/span>' : '')\n      +     (lugar ? '<span class=\"bae-row\"><i class=\"ti ti-map-pin\"><\/i>'+esc(lugar)+'<\/span>' : '')\n      +   '<\/div>'\n      + '<\/div><\/article>';\n  }\n\n  function renderCard(ev, slugs, startDate, lugar){\n    var tipo = tipoCat(slugs);\n    var tag  = ETIQUETAS[tipo]||ETIQUETAS.otro;\n    return '<article class=\"bae-card\" data-tipo=\"'+tipo+'\">'\n      + imgHtml(ev, false)\n      + '<div class=\"bae-card-body\">'\n      +   '<div class=\"bae-meta\">'\n      +     '<span class=\"bae-tag '+tag.cls+'\">'+tag.label+'<\/span>'\n      +     (startDate ? '<span class=\"bae-fechita\"><i class=\"ti ti-calendar\"><\/i>'+fechaCorta(startDate)+'<\/span>' : '')\n      +   '<\/div>'\n      +   '<h3 class=\"bae-card-tit\">'+ev.title.rendered+'<\/h3>'\n      +   '<p class=\"bae-card-desc\">'+strip(ev.excerpt.rendered)+'<\/p>'\n      +   infoRows(startDate, lugar, false)\n      + '<\/div><\/article>';\n  }\n\n  \/\/ \u2500\u2500 Paso 1: cargar categor\u00edas para tener el mapa id\u2192slug \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var base = window.location.origin;\n  var grid = document.getElementById('bae-grid');\n\n  fetch(base+'\/wp-json\/wp\/v2\/tribe_events_cat?per_page=100')\n    .then(function(r){\n      if(!r.ok) throw new Error('cats '+r.status);\n      return r.json();\n    })\n    .then(function(cats){\n      var catMap = {};\n      cats.forEach(function(c){ catMap[c.id] = c.slug; });\n\n      \/\/ \u2500\u2500 Paso 2: cargar eventos futuros \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      var hoy = new Date().toISOString().slice(0,10);\n      \/\/ after= filtra por fecha de publicaci\u00f3n; usamos per_page alto y filtramos por _EventStartDate en cliente\n      return fetch(base+'\/wp-json\/wp\/v2\/tribe_events?per_page=50&orderby=date&order=asc&_embed=1&status=publish')\n        .then(function(r){\n          if(!r.ok) throw new Error('events '+r.status);\n          return r.json();\n        })\n        .then(function(events){\n          return {events: events, catMap: catMap};\n        });\n    })\n    .then(function(payload){\n      var events  = payload.events;\n      var catMap  = payload.catMap;\n      var hoy     = new Date(); hoy.setHours(0,0,0,0);\n\n      \/\/ Filtrar eventos futuros (por _EventStartDate si existe, si no por date)\n      var futuros = events.filter(function(ev){\n        var raw = (ev.meta && ev.meta._EventStartDate) || ev.date;\n        return raw ? new Date(raw) >= hoy : false;\n      });\n\n      \/\/ Ordenar por fecha de inicio\n      futuros.sort(function(a,b){\n        var da = new Date((a.meta&&a.meta._EventStartDate)||a.date);\n        var db = new Date((b.meta&&b.meta._EventStartDate)||b.date);\n        return da-db;\n      });\n\n      if(!futuros.length){\n        grid.innerHTML = '<p class=\"bae-empty\">No hay eventos programados pr\u00f3ximamente.<\/p>';\n        activarFiltros();\n        return;\n      }\n\n      var destacado = null;\n      var resto     = [];\n\n      futuros.forEach(function(ev){\n        var catIds  = ev.tribe_events_cat || [];\n        var slugs   = catIds.map(function(id){ return catMap[id]||''; });\n        var start   = (ev.meta&&ev.meta._EventStartDate) || ev.date;\n        var lugar   = (ev.meta&&ev.meta._EventLocation) || '';\n        var esD     = slugs.indexOf('destacado') > -1;\n        if(!destacado && esD){\n          destacado = {ev:ev, slugs:slugs, start:start, lugar:lugar};\n        } else {\n          resto.push({ev:ev, slugs:slugs, start:start, lugar:lugar});\n        }\n      });\n\n      var html = '';\n      if(destacado) html += renderDestacado(destacado.ev, destacado.slugs, destacado.start, destacado.lugar);\n      resto.forEach(function(item){ html += renderCard(item.ev, item.slugs, item.start, item.lugar); });\n\n      grid.innerHTML = html || '<p class=\"bae-empty\">No hay eventos pr\u00f3ximamente.<\/p>';\n      activarFiltros();\n    })\n    .catch(function(err){\n      console.error('BaileAndo eventos:', err);\n      grid.innerHTML = '<p class=\"bae-empty\">No se pudieron cargar los eventos.<br><small style=\"font-size:13px;font-style:normal\">Comprueba que la API REST de WordPress est\u00e1 activa.<\/small><\/p>';\n    });\n\n  function activarFiltros(){\n    document.querySelectorAll('.bae-f').forEach(function(btn){\n      btn.addEventListener('click', function(){\n        document.querySelectorAll('.bae-f').forEach(function(b){b.classList.remove('on');});\n        btn.classList.add('on');\n        var tipo = btn.dataset.tipo;\n        document.querySelectorAll('#bae-grid > [data-tipo]').forEach(function(c){\n          var tipos = c.dataset.tipo.split(' ');\n          c.style.display = (tipo==='todos'||tipos.indexOf(tipo)>-1) ? '' : 'none';\n        });\n      });\n    });\n  }\n\n})();\n<\/script>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Agenda &amp; Escenario Eventos &amp; Actuaciones Descubre nuestras pr\u00f3ximas fechas, espect\u00e1culos y clasees especiales Todos Actuaciones Clasees Eventos Otros Cargando eventos\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-29","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/baileandodancestudio.com\/?author=1"},"uagb_comment_info":0,"uagb_excerpt":"Agenda &amp; Escenario Eventos &amp; Actuaciones Descubre nuestras pr\u00f3ximas fechas, espect\u00e1culos y clasees especiales Todos Actuaciones Clasees Eventos Otros Cargando eventos\u2026","_links":{"self":[{"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=\/wp\/v2\/pages\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=29"}],"version-history":[{"count":7,"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=\/wp\/v2\/pages\/29\/revisions"}],"predecessor-version":[{"id":165,"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=\/wp\/v2\/pages\/29\/revisions\/165"}],"wp:attachment":[{"href":"https:\/\/baileandodancestudio.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}