{"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":"compra","status":"publish","type":"page","link":"https:\/\/itishoemath.com\/pt_pt\/compra\/","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\">O seu carrinho est\u00e1 vazio. Clique em <a href=\"https:\/\/itishoemath.com\/pt_pt\/cursos\/\">aqui<\/a> para come\u00e7ar.<\/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 quem n\u00e3o fala ingl\u00eas:<\/p>\n\n\n\n<p>A p\u00e1gina de compra est\u00e1 restringida apenas ao ingl\u00eas pelo nosso fornecedor de pagamentos. O valor da moeda \u00e9 em d\u00f3lares americanos.<\/p>\n\n\n\n<p><br>A p\u00e1gina de compra est\u00e1 limitada ao ingl\u00eas apenas pelo nosso fornecedor de pagamento. O valor facturado \u00e9 em d\u00f3lares americanos.<\/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>A p\u00e1gina de compra est\u00e1 restrita ao ingl\u00eas por exig\u00eancia do nosso provedor de pagamentos. O valor cobrado ser\u00e1 em d\u00f3lares americanos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Para quem n\u00e3o fala ingl\u00eas: A p\u00e1gina de compra est\u00e1 restringida apenas ao ingl\u00eas pelo nosso fornecedor de pagamentos. O valor da moeda \u00e9 em d\u00f3lares americanos. A p\u00e1gina de compra est\u00e1 limitada ao ingl\u00eas apenas pelo nosso fornecedor de pagamentos. O valor facturado \u00e9 em d\u00f3lares americanos. \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\/pt_pt\/wp-json\/wp\/v2\/pages\/2526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/comments?post=2526"}],"version-history":[{"count":23,"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/pages\/2526\/revisions"}],"predecessor-version":[{"id":4513,"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/pages\/2526\/revisions\/4513"}],"wp:attachment":[{"href":"https:\/\/itishoemath.com\/pt_pt\/wp-json\/wp\/v2\/media?parent=2526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}