{"id":863,"date":"2026-04-13T06:24:07","date_gmt":"2026-04-13T06:24:07","guid":{"rendered":"https:\/\/bodafranyjose.com\/?page_id=863"},"modified":"2026-04-15T06:33:17","modified_gmt":"2026-04-15T06:33:17","slug":"organizacion","status":"publish","type":"page","link":"https:\/\/bodafranyjose.com\/index.php\/organizacion\/","title":{"rendered":"organizacion"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"863\" class=\"elementor elementor-863\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a87c876 e-flex e-con-boxed e-con e-parent\" data-id=\"a87c876\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6941e60 elementor-widget elementor-widget-html\" data-id=\"6941e60\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n  .dashboard-boda {\n    background: #fff;\n    border-radius: 24px;\n    box-shadow: 0 4px 25px rgba(0,0,0,0.08);\n    padding: 26px 18px;\n    max-width: 1100px;\n    margin: 0 auto;\n    font-family: 'Poppins', sans-serif;\n    color: #333;\n  }\n\n  .dashboard-title {\n    text-align: center;\n    color: #b67b91;\n    margin: 0 0 8px;\n    font-size: 1.85rem;\n    font-weight: 700;\n  }\n\n  .dashboard-subtitle {\n    text-align: center;\n    color: #666;\n    margin: 0 0 18px;\n    font-size: 0.95rem;\n  }\n\n  .dashboard-actions {\n    display: flex;\n    justify-content: center;\n    gap: 10px;\n    flex-wrap: wrap;\n    margin-bottom: 18px;\n  }\n\n  .dash-btn {\n    background: #b67b91;\n    color: #fff;\n    border: none;\n    border-radius: 8px;\n    padding: 9px 16px;\n    cursor: pointer;\n    font-weight: 600;\n    transition: 0.3s;\n  }\n\n  .dash-btn:hover {\n    background: #a56b82;\n  }\n\n  .dash-btn-outline {\n    background: #fff;\n    color: #b67b91;\n    border: 1px solid #e6cfd8;\n  }\n\n  .dash-btn-outline:hover {\n    background: #faf6f8;\n  }\n\n  .dash-summary {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    gap: 12px;\n    margin-bottom: 20px;\n  }\n\n  .dash-card {\n    display: block;\n    text-decoration: none;\n    background: #faf6f8;\n    border-radius: 16px;\n    padding: 13px 12px;\n    text-align: center;\n    box-shadow: 0 2px 10px rgba(0,0,0,0.05);\n    color: inherit;\n    transition: transform 0.2s ease, box-shadow 0.2s ease;\n  }\n\n  .dash-card:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 5px 16px rgba(0,0,0,0.08);\n  }\n\n  .dash-card h3 {\n    margin: 0 0 7px;\n    color: #b67b91;\n    font-size: 0.86rem;\n    font-weight: 600;\n  }\n\n  .dash-card span {\n    display: block;\n    color: #333;\n    font-size: 1.35rem;\n    font-weight: 700;\n    line-height: 1.1;\n  }\n\n  .dash-card small {\n    display: block;\n    margin-top: 5px;\n    color: #666;\n    font-size: 0.76rem;\n  }\n\n  .dash-card.invitados { background: #f4f0f8; }\n  .dash-card.gastos { background: #f8e6ec; }\n  .dash-card.tareas { background: #fff3d8; }\n  .dash-card.mesas { background: #e3f7e6; }\n\n  .dash-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 14px;\n  }\n\n  .dash-panel {\n    border: 1px solid #f0e6ea;\n    border-radius: 18px;\n    padding: 15px;\n    background: #fff;\n    box-shadow: 0 3px 14px rgba(0,0,0,0.04);\n  }\n\n  .dash-panel-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 12px;\n  }\n\n  .dash-panel h3 {\n    color: #b67b91;\n    margin: 0;\n    font-size: 1.02rem;\n  }\n\n  .dash-link {\n    color: #b67b91;\n    text-decoration: none;\n    font-weight: 700;\n    font-size: 0.82rem;\n    white-space: nowrap;\n  }\n\n  .dash-link:hover {\n    text-decoration: underline;\n  }\n\n  .dash-row {\n    display: flex;\n    justify-content: space-between;\n    gap: 10px;\n    padding: 7px 0;\n    border-bottom: 1px solid #f4edf0;\n    color: #444;\n    font-size: 0.9rem;\n  }\n\n  .dash-row:last-child {\n    border-bottom: none;\n  }\n\n  .dash-row strong {\n    color: #333;\n  }\n\n  .dash-progress {\n    height: 9px;\n    background: #eee;\n    border-radius: 10px;\n    overflow: hidden;\n    margin: 9px 0 4px;\n  }\n\n  .dash-progress span {\n    display: block;\n    height: 100%;\n    width: 0%;\n    background: linear-gradient(90deg, #b67b91, #a56b82);\n    border-radius: 10px;\n    transition: width 0.4s ease;\n  }\n\n  .dash-list {\n    display: grid;\n    gap: 7px;\n  }\n\n  .dash-pill {\n    background: #faf6f8;\n    border-radius: 12px;\n    padding: 8px 10px;\n    font-size: 0.88rem;\n    color: #444;\n  }\n\n  .dash-pill strong {\n    color: #b67b91;\n  }\n\n  .dash-empty {\n    color: #999;\n    text-align: center;\n    background: #faf6f8;\n    border-radius: 12px;\n    padding: 13px;\n    font-size: 0.88rem;\n  }\n\n  .dash-error {\n    display: none;\n    margin-bottom: 14px;\n    background: #fcefee;\n    color: #a5447d;\n    border-radius: 12px;\n    padding: 12px;\n    text-align: center;\n    font-weight: 600;\n  }\n\n  @media (max-width: 850px) {\n    .dashboard-boda {\n      padding: 22px 14px;\n    }\n\n    .dashboard-title {\n      font-size: 1.5rem;\n    }\n\n    .dashboard-subtitle {\n      font-size: 0.88rem;\n      margin-bottom: 14px;\n    }\n\n    .dashboard-actions {\n      margin-bottom: 14px;\n    }\n\n    .dash-summary {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 9px;\n      margin-bottom: 16px;\n    }\n\n    .dash-card {\n      padding: 10px 8px;\n      border-radius: 14px;\n    }\n\n    .dash-card h3 {\n      font-size: 0.78rem;\n      margin-bottom: 5px;\n    }\n\n    .dash-card span {\n      font-size: 1.08rem;\n    }\n\n    .dash-card small {\n      font-size: 0.68rem;\n      line-height: 1.2;\n    }\n\n    .dash-grid {\n      grid-template-columns: 1fr;\n      gap: 12px;\n    }\n\n    .dash-panel {\n      padding: 14px;\n    }\n\n    .dash-row {\n      font-size: 0.88rem;\n    }\n\n    .dash-btn {\n      width: 100%;\n    }\n  }\n<\/style>\n\n<div class=\"dashboard-boda\">\n  <h2 class=\"dashboard-title\">\ud83d\udcca Dashboard de la Boda<\/h2>\n  <p class=\"dashboard-subtitle\">Resumen general de invitados, gastos, tareas, cronograma y mesas.<\/p>\n\n  <div class=\"dashboard-actions\">\n    <button class=\"dash-btn\" onclick=\"cargarDashboard()\">\ud83d\udd04 Actualizar dashboard<\/button>\n    <button class=\"dash-btn\" onclick=\"compartirPorWhatsApp()\">\ud83d\udcac Compartir por WhatsApp<\/button>\n    <button class=\"dash-btn dash-btn-outline\" onclick=\"copiarEnlaceBoda()\">\ud83d\udd17 Copiar enlace<\/button>\n  <\/div>\n\n  <div id=\"dashboardError\" class=\"dash-error\"><\/div>\n\n  <div class=\"dash-summary\">\n    <a href=\"https:\/\/bodafranyjose.com\/index.php\/lista-invitados\/\" class=\"dash-card invitados\">\n      <h3>Invitados<\/h3>\n      <span id=\"dashInvitados\">0<\/span>\n      <small id=\"dashInvitadosMeta\">0 confirmados<\/small>\n    <\/a>\n\n    <a href=\"https:\/\/bodafranyjose.com\/index.php\/gastos\/\" class=\"dash-card gastos\">\n      <h3>Restante<\/h3>\n      <span id=\"dashRestante\">0\u20ac<\/span>\n      <small id=\"dashGastosMeta\">0\u20ac pagados<\/small>\n    <\/a>\n\n    <a href=\"https:\/\/bodafranyjose.com\/index.php\/tareas\/\" class=\"dash-card tareas\">\n      <h3>Tareas<\/h3>\n      <span id=\"dashTareasPendientes\">0<\/span>\n      <small id=\"dashTareasMeta\">0 completadas<\/small>\n    <\/a>\n\n    <a href=\"https:\/\/bodafranyjose.com\/index.php\/mesas\/\" class=\"dash-card mesas\">\n      <h3>Plazas libres<\/h3>\n      <span id=\"dashPlazasLibres\">0<\/span>\n      <small id=\"dashMesasMeta\">0 mesas<\/small>\n    <\/a>\n  <\/div>\n\n  <div class=\"dash-grid\">\n    <div class=\"dash-panel\">\n      <div class=\"dash-panel-header\">\n        <h3>\ud83d\udc8d Invitados<\/h3>\n        <a class=\"dash-link\" href=\"https:\/\/bodafranyjose.com\/index.php\/lista-invitados\/\">Abrir<\/a>\n      <\/div>\n      <div class=\"dash-row\"><span>Total personas<\/span><strong id=\"invTotalPersonas\">0<\/strong><\/div>\n      <div class=\"dash-row\"><span>Invitados base<\/span><strong id=\"invBase\">0<\/strong><\/div>\n      <div class=\"dash-row\"><span>Acompa\u00f1antes<\/span><strong id=\"invAcompanantes\">0<\/strong><\/div>\n      <div class=\"dash-row\"><span>Confirmados<\/span><strong id=\"invConfirmados\">0<\/strong><\/div>\n      <div class=\"dash-progress\"><span id=\"invProgress\"><\/span><\/div>\n      <div class=\"dash-row\"><span>Pendientes de confirmar<\/span><strong id=\"invPendientes\">0<\/strong><\/div>\n    <\/div>\n\n    <div class=\"dash-panel\">\n      <div class=\"dash-panel-header\">\n        <h3>\ud83d\udcb8 Gastos<\/h3>\n        <a class=\"dash-link\" href=\"https:\/\/bodafranyjose.com\/index.php\/gastos\/\">Abrir<\/a>\n      <\/div>\n      <div class=\"dash-row\"><span>Total previsto<\/span><strong id=\"gastoTotal\">0\u20ac<\/strong><\/div>\n      <div class=\"dash-row\"><span>Pagado<\/span><strong id=\"gastoPagado\">0\u20ac<\/strong><\/div>\n      <div class=\"dash-row\"><span>Restante<\/span><strong id=\"gastoRestante\">0\u20ac<\/strong><\/div>\n      <div class=\"dash-progress\"><span id=\"gastoProgress\"><\/span><\/div>\n      <div class=\"dash-row\"><span>Conceptos registrados<\/span><strong id=\"gastoConceptos\">0<\/strong><\/div>\n    <\/div>\n\n    <div class=\"dash-panel\">\n      <div class=\"dash-panel-header\">\n        <h3>\ud83d\udcdd Pr\u00f3ximas tareas<\/h3>\n        <a class=\"dash-link\" href=\"https:\/\/bodafranyjose.com\/index.php\/tareas\/\">Abrir<\/a>\n      <\/div>\n      <div id=\"listaTareasPendientes\" class=\"dash-list\"><\/div>\n    <\/div>\n\n    <div class=\"dash-panel\">\n      <div class=\"dash-panel-header\">\n        <h3>\ud83d\udd52 Cronograma<\/h3>\n        <a class=\"dash-link\" href=\"https:\/\/bodafranyjose.com\/index.php\/time-line\/\">Abrir<\/a>\n      <\/div>\n      <div id=\"listaTimeline\" class=\"dash-list\"><\/div>\n    <\/div>\n\n    <div class=\"dash-panel\">\n      <div class=\"dash-panel-header\">\n        <h3>\ud83e\ude91 Mesas<\/h3>\n        <a class=\"dash-link\" href=\"https:\/\/bodafranyjose.com\/index.php\/mesas\/\">Abrir<\/a>\n      <\/div>\n      <div class=\"dash-row\"><span>Mesas creadas<\/span><strong id=\"mesasTotal\">0<\/strong><\/div>\n      <div class=\"dash-row\"><span>Plazas totales<\/span><strong id=\"mesasPlazas\">0<\/strong><\/div>\n      <div class=\"dash-row\"><span>Sentados<\/span><strong id=\"mesasSentados\">0<\/strong><\/div>\n      <div class=\"dash-row\"><span>Libres<\/span><strong id=\"mesasLibres\">0<\/strong><\/div>\n      <div class=\"dash-progress\"><span id=\"mesasProgress\"><\/span><\/div>\n    <\/div>\n\n    <div class=\"dash-panel\">\n      <div class=\"dash-panel-header\">\n        <h3>\ud83d\udc65 Sin sentar<\/h3>\n        <a class=\"dash-link\" href=\"https:\/\/bodafranyjose.com\/index.php\/mesas\/\">Abrir mesas<\/a>\n      <\/div>\n      <div id=\"listaSinSentar\" class=\"dash-list\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\nconst DASH_INVITADOS_URL = 'https:\/\/bodafranyjose.com\/wp-content\/uploads\/invitados\/invitados.json';\nconst DASH_GASTOS_URL = 'https:\/\/bodafranyjose.com\/wp-content\/uploads\/gastos\/gastos.json';\nconst DASH_TAREAS_URL = 'https:\/\/bodafranyjose.com\/wp-content\/uploads\/tareas\/tareas.json';\nconst DASH_TIMELINE_URL = 'https:\/\/bodafranyjose.com\/wp-content\/uploads\/timeline\/timeline.json';\nconst DASH_MESAS_URL = 'https:\/\/bodafranyjose.com\/wp-content\/uploads\/mesas\/mesas.json';\nconst ENLACE_BODA = 'https:\/\/bodafranyjose.com\/';\nconst MENSAJE_BODA = 'Hola, os compartimos el enlace de nuestra boda para que pod\u00e1is ver toda la informaci\u00f3n y confirmar vuestra asistencia: ' + ENLACE_BODA;\n\nfunction escaparHTML(valor) {\n  return String(valor || \"\")\n    .replace(\/&\/g, \"&amp;\")\n    .replace(\/<\/g, \"&lt;\")\n    .replace(\/>\/g, \"&gt;\")\n    .replace(\/\"\/g, \"&quot;\")\n    .replace(\/'\/g, \"&#039;\");\n}\n\nfunction normalizarTexto(valor) {\n  return String(valor || \"\").trim().toLowerCase();\n}\n\nfunction euros(valor) {\n  return (Number(valor) || 0).toLocaleString(\"es-ES\", {\n    minimumFractionDigits: 0,\n    maximumFractionDigits: 2\n  }) + \"\u20ac\";\n}\n\nfunction porcentaje(parte, total) {\n  if (!total) return 0;\n  return Math.max(0, Math.min((parte \/ total) * 100, 100));\n}\n\nfunction minutosDesdeHora(hora) {\n  if (!hora || !hora.includes(\":\")) return 99999;\n  const partes = hora.split(\":\").map(Number);\n  return (partes[0] || 0) * 60 + (partes[1] || 0);\n}\n\nasync function cargarJSON(url) {\n  const res = await fetch(url + '?v=' + Date.now());\n\n  if (!res.ok) {\n    throw new Error(\"No se pudo cargar \" + url);\n  }\n\n  const data = await res.json();\n  return Array.isArray(data) ? data : [];\n}\n\nfunction personasInvitados(invitados) {\n  const personas = [];\n\n  invitados.forEach(inv => {\n    if (inv.nombre) {\n      personas.push(inv.nombre);\n    }\n\n    if (inv.nombre && inv.acompanante) {\n      personas.push(\"Acompa\u00f1ante de \" + inv.nombre);\n    }\n  });\n\n  return personas;\n}\n\nfunction personasSentadas(mesas) {\n  const sentadas = [];\n\n  mesas.forEach(mesa => {\n    const asientos = Array.isArray(mesa.asientos) ? mesa.asientos : [];\n\n    asientos.forEach(nombre => {\n      if (nombre) {\n        sentadas.push(nombre);\n      }\n    });\n  });\n\n  return sentadas;\n}\n\nfunction compartirPorWhatsApp() {\n  const url = 'https:\/\/wa.me\/?text=' + encodeURIComponent(MENSAJE_BODA);\n  window.open(url, '_blank');\n}\n\nasync function copiarEnlaceBoda() {\n  try {\n    await navigator.clipboard.writeText(ENLACE_BODA);\n    alert('Enlace copiado: ' + ENLACE_BODA);\n  } catch (error) {\n    prompt('Copia este enlace manualmente:', ENLACE_BODA);\n  }\n}\n\nasync function cargarDashboard() {\n  const errorBox = document.getElementById(\"dashboardError\");\n  errorBox.style.display = \"none\";\n  errorBox.textContent = \"\";\n\n  try {\n    const [invitados, gastos, tareas, timeline, mesas] = await Promise.all([\n      cargarJSON(DASH_INVITADOS_URL),\n      cargarJSON(DASH_GASTOS_URL),\n      cargarJSON(DASH_TAREAS_URL),\n      cargarJSON(DASH_TIMELINE_URL),\n      cargarJSON(DASH_MESAS_URL)\n    ]);\n\n    renderInvitados(invitados);\n    renderGastos(gastos);\n    renderTareas(tareas);\n    renderTimeline(timeline);\n    renderMesas(mesas);\n    renderSinSentar(invitados, mesas);\n  } catch (e) {\n    console.error(\"Error cargando dashboard:\", e);\n    errorBox.textContent = \"No se pudo cargar alg\u00fan dato del dashboard. Revisa que todos los JSON existan.\";\n    errorBox.style.display = \"block\";\n  }\n}\n\nfunction renderInvitados(invitados) {\n  const base = invitados.length;\n  const acompanantes = invitados.filter(i => i.acompanante).length;\n  const totalPersonas = base + acompanantes;\n  const confirmados = invitados.filter(i => i.confirmado).length;\n  const pendientes = base - confirmados;\n\n  document.getElementById(\"dashInvitados\").textContent = totalPersonas;\n  document.getElementById(\"dashInvitadosMeta\").textContent = confirmados + \" confirmados\";\n  document.getElementById(\"invTotalPersonas\").textContent = totalPersonas;\n  document.getElementById(\"invBase\").textContent = base;\n  document.getElementById(\"invAcompanantes\").textContent = acompanantes;\n  document.getElementById(\"invConfirmados\").textContent = confirmados;\n  document.getElementById(\"invPendientes\").textContent = pendientes;\n  document.getElementById(\"invProgress\").style.width = porcentaje(confirmados, base) + \"%\";\n}\n\nfunction renderGastos(gastos) {\n  const total = gastos.reduce((acc, g) => acc + (Number(g.precio) || 0), 0);\n  const pagado = gastos.reduce((acc, g) => acc + (Number(g.pagado) || 0), 0);\n  const restante = total - pagado;\n\n  document.getElementById(\"dashRestante\").textContent = euros(restante);\n  document.getElementById(\"dashGastosMeta\").textContent = euros(pagado) + \" pagados\";\n  document.getElementById(\"gastoTotal\").textContent = euros(total);\n  document.getElementById(\"gastoPagado\").textContent = euros(pagado);\n  document.getElementById(\"gastoRestante\").textContent = euros(restante);\n  document.getElementById(\"gastoConceptos\").textContent = gastos.length;\n  document.getElementById(\"gastoProgress\").style.width = porcentaje(pagado, total) + \"%\";\n}\n\nfunction renderTareas(tareas) {\n  const completadas = tareas.filter(t => t.completada).length;\n  const pendientes = tareas.filter(t => !t.completada);\n\n  document.getElementById(\"dashTareasPendientes\").textContent = pendientes.length;\n  document.getElementById(\"dashTareasMeta\").textContent = completadas + \" completadas\";\n\n  const cont = document.getElementById(\"listaTareasPendientes\");\n  cont.innerHTML = \"\";\n\n  if (!pendientes.length) {\n    cont.innerHTML = '<div class=\"dash-empty\">No hay tareas pendientes.<\/div>';\n    return;\n  }\n\n  pendientes.slice(0, 6).forEach(tarea => {\n    cont.innerHTML += `\n      <div class=\"dash-pill\">\n        <strong>${escaparHTML(tarea.responsable || \"Ambos\")}<\/strong> \u00b7 ${escaparHTML(tarea.texto || \"Tarea sin t\u00edtulo\")}\n      <\/div>\n    `;\n  });\n}\n\nfunction renderTimeline(timeline) {\n  const cont = document.getElementById(\"listaTimeline\");\n  cont.innerHTML = \"\";\n\n  const ordenado = timeline\n    .slice()\n    .sort((a, b) => minutosDesdeHora(a.hora) - minutosDesdeHora(b.hora));\n\n  if (!ordenado.length) {\n    cont.innerHTML = '<div class=\"dash-empty\">No hay eventos en el cronograma.<\/div>';\n    return;\n  }\n\n  ordenado.slice(0, 6).forEach(item => {\n    cont.innerHTML += `\n      <div class=\"dash-pill\">\n        <strong>${escaparHTML(item.hora || \"--:--\")}<\/strong> \u00b7 ${escaparHTML(item.evento || \"Evento sin t\u00edtulo\")}\n      <\/div>\n    `;\n  });\n}\n\nfunction renderMesas(mesas) {\n  const totalMesas = mesas.length;\n  const plazas = mesas.reduce((acc, mesa) => acc + (Number(mesa.capacidad) || 0), 0);\n  const sentados = mesas.reduce((acc, mesa) => {\n    const asientos = Array.isArray(mesa.asientos) ? mesa.asientos : [];\n    return acc + asientos.filter(Boolean).length;\n  }, 0);\n  const libres = plazas - sentados;\n\n  document.getElementById(\"dashPlazasLibres\").textContent = libres;\n  document.getElementById(\"dashMesasMeta\").textContent = totalMesas + \" mesas\";\n  document.getElementById(\"mesasTotal\").textContent = totalMesas;\n  document.getElementById(\"mesasPlazas\").textContent = plazas;\n  document.getElementById(\"mesasSentados\").textContent = sentados;\n  document.getElementById(\"mesasLibres\").textContent = libres;\n  document.getElementById(\"mesasProgress\").style.width = porcentaje(sentados, plazas) + \"%\";\n}\n\nfunction renderSinSentar(invitados, mesas) {\n  const personas = personasInvitados(invitados);\n  const sentadas = new Set(personasSentadas(mesas).map(normalizarTexto));\n  const sinSentar = personas.filter(nombre => !sentadas.has(normalizarTexto(nombre)));\n\n  const cont = document.getElementById(\"listaSinSentar\");\n  cont.innerHTML = \"\";\n\n  if (!sinSentar.length) {\n    cont.innerHTML = '<div class=\"dash-empty\">Todos los invitados est\u00e1n sentados.<\/div>';\n    return;\n  }\n\n  sinSentar.slice(0, 8).forEach(nombre => {\n    cont.innerHTML += `<div class=\"dash-pill\">${escaparHTML(nombre)}<\/div>`;\n  });\n\n  if (sinSentar.length > 8) {\n    cont.innerHTML += `<div class=\"dash-pill\"><strong>+${sinSentar.length - 8}<\/strong> m\u00e1s sin sentar<\/div>`;\n  }\n}\n\ncargarDashboard();\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>\ud83d\udcca Dashboard de la Boda Resumen general de invitados, gastos, tareas, cronograma y mesas. \ud83d\udd04 Actualizar dashboard \ud83d\udcac Compartir por WhatsApp \ud83d\udd17 Copiar enlace Invitados 0 0 confirmados Restante 0\u20ac 0\u20ac pagados Tareas 0 0 completadas Plazas libres 0 0 mesas \ud83d\udc8d Invitados Abrir Total personas0 Invitados base0 Acompa\u00f1antes0 Confirmados0 Pendientes de confirmar0 \ud83d\udcb8 Gastos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-863","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>organizacion -<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"organizacion -\" \/>\n<meta property=\"og:description\" content=\"\ud83d\udcca Dashboard de la Boda Resumen general de invitados, gastos, tareas, cronograma y mesas. \ud83d\udd04 Actualizar dashboard \ud83d\udcac Compartir por WhatsApp \ud83d\udd17 Copiar enlace Invitados 0 0 confirmados Restante 0\u20ac 0\u20ac pagados Tareas 0 0 completadas Plazas libres 0 0 mesas \ud83d\udc8d Invitados Abrir Total personas0 Invitados base0 Acompa\u00f1antes0 Confirmados0 Pendientes de confirmar0 \ud83d\udcb8 Gastos [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bodafranyjose.com\/index.php\/organizacion\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-15T06:33:17+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bodafranyjose.com\\\/index.php\\\/organizacion\\\/\",\"url\":\"https:\\\/\\\/bodafranyjose.com\\\/index.php\\\/organizacion\\\/\",\"name\":\"organizacion -\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bodafranyjose.com\\\/#website\"},\"datePublished\":\"2026-04-13T06:24:07+00:00\",\"dateModified\":\"2026-04-15T06:33:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bodafranyjose.com\\\/index.php\\\/organizacion\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bodafranyjose.com\\\/index.php\\\/organizacion\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bodafranyjose.com\\\/index.php\\\/organizacion\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/bodafranyjose.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"organizacion\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bodafranyjose.com\\\/#website\",\"url\":\"https:\\\/\\\/bodafranyjose.com\\\/\",\"name\":\"\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bodafranyjose.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"organizacion -","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"organizacion -","og_description":"\ud83d\udcca Dashboard de la Boda Resumen general de invitados, gastos, tareas, cronograma y mesas. \ud83d\udd04 Actualizar dashboard \ud83d\udcac Compartir por WhatsApp \ud83d\udd17 Copiar enlace Invitados 0 0 confirmados Restante 0\u20ac 0\u20ac pagados Tareas 0 0 completadas Plazas libres 0 0 mesas \ud83d\udc8d Invitados Abrir Total personas0 Invitados base0 Acompa\u00f1antes0 Confirmados0 Pendientes de confirmar0 \ud83d\udcb8 Gastos [&hellip;]","og_url":"https:\/\/bodafranyjose.com\/index.php\/organizacion\/","article_modified_time":"2026-04-15T06:33:17+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bodafranyjose.com\/index.php\/organizacion\/","url":"https:\/\/bodafranyjose.com\/index.php\/organizacion\/","name":"organizacion -","isPartOf":{"@id":"https:\/\/bodafranyjose.com\/#website"},"datePublished":"2026-04-13T06:24:07+00:00","dateModified":"2026-04-15T06:33:17+00:00","breadcrumb":{"@id":"https:\/\/bodafranyjose.com\/index.php\/organizacion\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bodafranyjose.com\/index.php\/organizacion\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bodafranyjose.com\/index.php\/organizacion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/bodafranyjose.com\/"},{"@type":"ListItem","position":2,"name":"organizacion"}]},{"@type":"WebSite","@id":"https:\/\/bodafranyjose.com\/#website","url":"https:\/\/bodafranyjose.com\/","name":"","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bodafranyjose.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/pages\/863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/comments?post=863"}],"version-history":[{"count":17,"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/pages\/863\/revisions"}],"predecessor-version":[{"id":1074,"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/pages\/863\/revisions\/1074"}],"wp:attachment":[{"href":"https:\/\/bodafranyjose.com\/index.php\/wp-json\/wp\/v2\/media?parent=863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}