{"id":2526,"date":"2025-06-11T12:46:28","date_gmt":"2025-06-11T17:46:28","guid":{"rendered":"https:\/\/itishoemath.com\/purchase\/"},"modified":"2025-07-21T11:17:07","modified_gmt":"2025-07-21T16:17:07","slug":"comprar","status":"publish","type":"page","link":"https:\/\/itishoemath.com\/es_es\/comprar\/","title":{"rendered":"Comprar"},"content":{"rendered":"<script>\n\n  \/\/ Normalize pathname (remove trailing slash)\n  var path = window.location.pathname.replace(\/\\\/$\/, '');\n\n  \/\/ If NOT on '\/purchase' or '\/en\/purchase'\n  if (path !== '\/purchase' && path !== '\/en\/purchase') {\n    \/\/ Preserve current query string and hash\n    var query = window.location.search || '';\n    var hash = window.location.hash || '';\n\n    \/\/ Go to English purchase page, keeping parameters\n    var purchaseURL = window.location.origin + '\/en\/purchase\/' + query + hash;\n    if (window.location.pathname !== '\/en\/purchase\/') {\n      window.location.href = purchaseURL;\n    }\n  }\n\n<\/script>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  \/\/ Hide TranslatePress language switcher\n  var floater = document.getElementById('trp-floater-ls');\n  if (floater) {\n    floater.style.display = 'none';\n  }\n});\n<\/script>\n\n\n\n<script>\n\n\n\n\/\/ random password on all new users, prefer they use magic link (less friction)\n(function() {\n  const charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n  function generatePassword(length = 32) {\n    let password = \"\";\n    for (let i = 0; i < length; i++) {\n      password += charset.charAt(Math.floor(Math.random() * charset.length));\n    }\n    return password;\n  }\n\n  const observer = new MutationObserver((mutations, obs) => {\n    const input = document.getElementById('password');\n    if (input) {\n      input.value = generatePassword();\n      obs.disconnect(); \/\/ stop observing once found and handled\n    }\n  });\n\n  observer.observe(document.body, {\n    childList: true,\n    subtree: true\n  });\n})();\n<\/script>\n\n\n\n<style>\n\n.llms-coupon-wrapper { display: none !important; }\n\n.llms-form-heading {\n    all: unset;\n    font-size: inherit;\n    font-weight: inherit;\n    margin: inherit;\n    padding: inherit;\n}\n.llms-notice {\n    display: none !important;\n}\n\/* Force Stripe Elements input fields to be readable *\/\ninput.StripeElement,\n.StripeElement {\n    color: #000 !important;\n    background-color: #fff !important;\n    padding: 10px !important;\n    border-radius: 4px;\n    border: 1px solid #ccc;\n}\n\n\/* Optional: Focus and error states for better UX *\/\n.StripeElement--focus {\n    border-color: #0073aa;\n}\n\n.StripeElement--invalid {\n    border-color: #cc0000;\n}\n\/* LifterLMS password input *\/\ninput.llms-field-input#password,\ninput.llms-field-input#password:focus,      \/* user is typing *\/\ninput.llms-field-input#password:active,     \/* clicked *\/\ninput.llms-field-input#password.llms-error, \/* failed validation *\/\ninput.llms-field-input#password:-webkit-autofill {  \/* Chrome autofill *\/\n    color: #ffffff !important;              \/* text turns white *\/\n}\n\n\/* Optional \u2013 make the placeholder text readable too *\/\ninput.llms-field-input#password::placeholder {\n    color: #e0e0e0;\n}\n\n#password {\n  display: none !important;\n}\n\n.llms-form-field.type-password,\n.llms-description {\n  display: none !important;\n}\n\n.elementor-1511 .elementor-element.elementor-element-7bbc64b .elementor-heading-title {\n    font-family: \"HM Harting\", Sans-serif !important;\n    font-size: 60px !important;\n    font-weight: 500 !important;\n    text-transform: none !important;\n    text-decoration: none !important;\n    line-height: 1.1em !important;\n    letter-spacing: 0px !important;\n    word-spacing: 0em !important;\n    color: var( --e-global-color-primary ) !important;\n}\n\n.elementor-1511 .elementor-element.elementor-element-7bbc64b .elementor-heading-title h6 {\n    font-size: 36px !important;\n    font-weight: 500 !important;\n}\n\n.elementor-1511 .elementor-element.elementor-element-7bbc64b .elementor-heading-title h6 {\n    font-size: 60px !important;\n    font-weight: 600 !important;\n}\n<\/style>\n\n\n<div class=\"lifterlms\"><div class=\"llms-checkout-wrapper\">Tu carrito est\u00e1 vac\u00edo.  Haz clic en <a href=\"https:\/\/itishoemath.com\/es_es\/cursos\/\">aqu\u00ed<\/a> para empezar.<\/div><!-- .llms-checkout-wrapper --><\/div>\n\n\n<script>\n\/**\n * Hold user on ?plan=2532 until enrollment finishes,\n * then send them back to the page they came from.\n *\n * Place in WPCode as a JavaScript snippet, \u201cSite Front-end\u201d.\n * Scope \u2192 Entire site   |   Priority \u2192 After Body Open (or Footer)\n *\/\n(function () {\n  const url = new URL(window.location.href);\n  const qs = url.searchParams;\n\n  const isEnrollPage = qs.get('plan') === '2532';\n  const hasRefreshed = sessionStorage.getItem('llms_enrollrefresh') === '1';\n  const currentPage = url.origin + url.pathname;\n  const cameFrom = document.referrer || '\/';\n\n  \/\/ STEP 1 \u2014 On initial enroll page, intercept AJAX and reload on success\n  if (isEnrollPage && !hasRefreshed) {\n    \/\/ Save referring page\n    if (!sessionStorage.getItem('llms_backto')) {\n      sessionStorage.setItem('llms_backto', cameFrom);\n    }\n\n    \/\/ Intercept AJAX\n    const origFetch = window.fetch;\n    window.fetch = async function (...args) {\n      const response = await origFetch.apply(this, args);\n      const [reqUrl] = args;\n      const isLifter = typeof reqUrl === 'string' && reqUrl.includes('lifterlms');\n\n      if (isLifter && response.ok) {\n        try {\n          const json = await response.clone().json();\n          const success = json?.success || json?.data?.result === 'success';\n          if (success) {\n            \/\/ Trigger real browser refresh\n            sessionStorage.setItem('llms_enrollrefresh', '1');\n            window.location.reload();\n          }\n        } catch (e) {\n          console.error('LifterLMS AJAX success parse failed:', e);\n        }\n      }\n\n      return response;\n    };\n  }\n\n  \/\/ STEP 2 \u2014 After reload, show overlay, wait for notification, then redirect\n  if (hasRefreshed) {\n    const overlay = document.createElement('div');\n    overlay.id = 'llms-waiting-overlay';\n    overlay.style = `\n      position:fixed;inset:0;z-index:99999;\n      display:flex;align-items:center;justify-content:center;\n      background:rgba(255,255,255,0.96);\n      font:700 1.2rem sans-serif;\n    `;\n    overlay.textContent = 'Finalizing your enrollment\u2026';\n    document.body.appendChild(overlay);\n\n    const backTo = sessionStorage.getItem('llms_backto') || '\/';\n\n    const redirect = () => {\n      if (overlay) overlay.remove();\n      sessionStorage.removeItem('llms_enrollrefresh');\n      sessionStorage.removeItem('llms_backto');\n      window.location.href = backTo;\n    };\n\n    \/\/ Use polling instead of MutationObserver (more reliable here)\n    const interval = setInterval(() => {\n      const notif = document.querySelector('.llms-notification[data-trigger=\"enrollment\"]');\n      if (notif && notif.textContent.includes('Membership enrollment success')) {\n        clearInterval(interval);\n        setTimeout(redirect, 1500); \/\/ short delay so user sees it\n      }\n    }, 300);\n\n    \/\/ Failsafe timeout after 60 seconds\n    setTimeout(() => {\n      clearInterval(interval);\n      redirect();\n    }, 60000);\n  }\n})();\n\n\n<\/script>\n\n\n\n<script>\n\n\/\/ 1\n(function () {\n  const fullURL = window.location.href;\n  const qs = new URLSearchParams(window.location.search);\n  if (qs.get('plan') !== '2532') return;\n\n  let overlayShown = false;\n\n  function showOverlay() {\n    if (overlayShown) return;\n    overlayShown = true;\n\n    const overlay = document.createElement('div');\n    overlay.style = `\n      position:fixed;inset:0;z-index:99999;\n      background:rgba(255,255,255,0.97);\n      display:flex;flex-direction:column;align-items:center;justify-content:center;\n      font-family:sans-serif;text-align:center;padding:2rem;\n    `;\n    overlay.innerHTML = `\n      <h2 style=\"font-size:1.5rem;margin-bottom:1rem;\">\u2705 You're enrolled!<\/h2>\n      <p style=\"margin-bottom:1.5rem;\">Click below to reload this page and continue.<\/p>\n      <button id=\"llms-go-home\" style=\"padding:0.75rem 1.5rem;font-size:1rem;cursor:pointer;\">\n        \ud83d\udd01 Reload Page\n      <\/button>\n    `;\n    document.body.appendChild(overlay);\n\n    document.getElementById('llms-go-home').addEventListener('click', function () {\n      window.location.href = fullURL;\n    });\n  }\n\n  \/\/ \u2705 PART 1: Watch for successful form submit\n  document.addEventListener('submit', function (e) {\n    const form = e.target;\n    if (!form.matches('form.llms-checkout, form.llms-access-plan-form') || overlayShown) return;\n\n    const spinner = document.createElement('div');\n    spinner.textContent = 'Enrolling\u2026 please wait';\n    spinner.style = `\n      position:fixed;inset:0;display:flex;align-items:center;justify-content:center;\n      background:rgba(255,255,255,0.92);\n      font:700 1.4rem sans-serif;\n      z-index:99999;\n    `;\n    document.body.appendChild(spinner);\n\n    setTimeout(() => {\n      spinner.remove();\n      showOverlay();\n    }, 3000);\n  }, true);\n\n  \/\/ \u2705 PART 2: On reload \u2014 if email is prefilled, show overlay again\n  \/\/ \u2705 But if #email_address is missing, redirect to home\n  window.addEventListener('DOMContentLoaded', function () {\n    const emailField = document.getElementById('email_address');\n\n    if (!emailField) {\n      \/\/ Enrollment complete; skip this page\n      window.location.href = '\/';\n      return;\n    }\n\n    if (emailField.value.trim() && !overlayShown) {\n      setTimeout(() => {\n        showOverlay();\n      }, 1000);\n    }\n  });\n})();\n\n\n\n<\/script>\n\n\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        if (window.location.pathname.includes('\/purchase\/')) {\n            var consentCheckbox = document.querySelector('#llms_ck_consent');\n            if (consentCheckbox && consentCheckbox.closest('div.llms-form-field')) {\n                consentCheckbox.closest('div.llms-form-field').style.display = 'none';\n            }\n        }\n    });\n    <\/script>\n\n\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  var first = document.querySelector('div.llms-form-field label[for=\"first_name\"]')\n    ?.closest('div.llms-form-field');\n  if (first && !document.querySelector('div.llms-form-field label[for=\"last_name\"]')) {\n    first.insertAdjacentHTML('afterend',\n      '<div class=\"clear\"><\/div><div class=\"llms-form-field type-text llms-cols-6 llms-cols-last llms-is-required\"><label for=\"last_name\">Last Name<span class=\"llms-required\">*<\/span><\/label><input class=\"llms-field-input\" id=\"last_name\" name=\"last_name\" required=\"required\" type=\"text\"><\/div>'\n    );\n  }\n});\n<\/script>\n\n\n\n\n\n<p>Para los que no hablan ingl\u00e9s:<\/p>\n\n\n\n<p>La p\u00e1gina de compra est\u00e1 restringida solo al ingl\u00e9s por nuestro proveedor de pagos. El importe del cobro est\u00e1 en d\u00f3lares estadounidenses.<\/p>\n\n\n\n<p><br>La p\u00e1gina de compra est\u00e1 limitada al espa\u00f1ol \u00fanicamente por nuestro prestatario de pago. El importe est\u00e1 expresado en d\u00f3lares estadounidenses.<\/p>\n\n\n\n<p><br>\u8cfc\u5165\u30da\u30fc\u30b8\u306f\u6c7a\u6e08\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u90fd\u5408\u306b\u3088\u308a\u82f1\u8a9e\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002\u8acb\u6c42\u984d\u306f\u7c73\u30c9\u30eb\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p><br>La p\u00e1gina de compra est\u00e1 disponible en ingl\u00e9s por petici\u00f3n de nuestro proveedor de servicios de pago. El valor cobrado ser\u00e1 en d\u00f3lares americanos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Para los que no hablan ingl\u00e9s: La p\u00e1gina de compra est\u00e1 restringida solo al ingl\u00e9s por nuestro proveedor de pagos. El importe del cobro est\u00e1 en d\u00f3lares estadounidenses. La page d'achat est limit\u00e9e \u00e0 l'anglais uniquement par notre prestataire de paiement. El importe facturado es en d\u00f3lares estadounidenses. \u8cfc\u5165\u30da\u30fc\u30b8\u306f\u6c7a\u6e08\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u90fd\u5408\u306b\u3088\u308a\u82f1\u8a9e\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3059\u3002\u8acb\u6c42\u984d\u306f\u7c73\u30c9\u30eb\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002 A p\u00e1gina de compra est\u00e1 restrita ao ingl\u00eas por [...]<\/p>","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2526","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/pages\/2526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/comments?post=2526"}],"version-history":[{"count":23,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/pages\/2526\/revisions"}],"predecessor-version":[{"id":4513,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/pages\/2526\/revisions\/4513"}],"wp:attachment":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/media?parent=2526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}