{"id":186,"date":"2026-07-24T22:41:53","date_gmt":"2026-07-24T22:41:53","guid":{"rendered":"https:\/\/prueba.todoyeso.cl\/?page_id=186"},"modified":"2026-07-25T03:19:43","modified_gmt":"2026-07-25T03:19:43","slug":"carrito-de-compras","status":"publish","type":"page","link":"https:\/\/prueba.todoyeso.cl\/?page_id=186","title":{"rendered":"Carrito de compras"},"content":{"rendered":"\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"carrito-container\"><h2 class=\"carrito-titulo\" align=\"center\">Mi Carrito<\/h2><div class=\"carrito-vacio\">    <p>Tu carrito est\u00e1 vac\u00edo.<\/p>    <a href=\"\/\" class=\"btn-seguir-comprando\">Volver a productos<\/a><\/div><\/div><script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        \n        \/\/ ========================================================\n        \/\/ FORMATEAR N\u00daMERO SIN DECIMALES\n        \/\/ ========================================================\n        function formatearPrecio(numero) {\n            return Math.round(numero).toLocaleString(\"es-CL\", {\n                minimumFractionDigits: 0,\n                maximumFractionDigits: 0\n            });\n        }\n        \n        \/\/ ========================================================\n        \/\/ ACTUALIZAR CANTIDAD V\u00cdA AJAX\n        \/\/ ========================================================\n        function actualizarCarrito(sku, nuevaCantidad, nombre) {\n            if (nuevaCantidad <= 0) {\n                if (!confirm(\"\u00bfEst\u00e1s seguro de que quieres eliminar \\\"\" + nombre + \"\\\" del carrito?\")) {\n                    return;\n                }\n            }\n            \n            var formData = new FormData();\n            formData.append(\"action\", \"actualizar_cantidad_carrito\");\n            formData.append(\"sku\", sku);\n            formData.append(\"cantidad\", nuevaCantidad);\n            formData.append(\"nonce\", \"83247ecdbb\");\n            \n            fetch(\"https:\/\/prueba.todoyeso.cl\/wp-admin\/admin-ajax.php\", {\n                method: \"POST\",\n                body: formData\n            })\n            .then(function(response) {\n                return response.json();\n            })\n            .then(function(data) {\n                if (data.success) {\n                    \/\/ Actualizar contador flotante\n                    var contador = document.querySelector(\".carrito-contador\");\n                    if (contador) {\n                        if (data.data.cantidad_total > 0) {\n                            contador.textContent = data.data.cantidad_total;\n                            contador.style.display = \"flex\";\n                        } else {\n                            contador.style.display = \"none\";\n                        }\n                    }\n                    \n                    if (nuevaCantidad <= 0) {\n                        var itemDesktop = document.querySelector(\".carrito-item[data-sku=\\\"\" + sku + \"\\\"]\");\n                        if (itemDesktop) itemDesktop.remove();\n                        \n                        var itemMobile = document.querySelector(\".carrito-item-mobile[data-sku=\\\"\" + sku + \"\\\"]\");\n                        if (itemMobile) itemMobile.remove();\n                        \n                        var itemsRestantes = document.querySelectorAll(\".carrito-item\");\n                        if (itemsRestantes.length === 0) {\n                            location.reload();\n                        }\n                    } else {\n                        \/\/ ACTUALIZAR CANTIDAD EN ESCRITORIO\n                        var cantidadDesktop = document.querySelector(\"#cantidad-\" + sku);\n                        if (cantidadDesktop) {\n                            cantidadDesktop.textContent = nuevaCantidad;\n                        }\n                        \n                        \/\/ ACTUALIZAR data-cantidad EN BOTONES DE ESCRITORIO\n                        var botonesDesktop = document.querySelectorAll(\".carrito-item[data-sku=\\\"\" + sku + \"\\\"] .btn-cantidad\");\n                        botonesDesktop.forEach(function(btn) {\n                            var esMenos = btn.classList.contains(\"btn-cantidad-menos\");\n                            var esMas = btn.classList.contains(\"btn-cantidad-mas\");\n                            if (esMenos) {\n                                btn.setAttribute(\"data-cantidad\", nuevaCantidad - 1);\n                            } else if (esMas) {\n                                btn.setAttribute(\"data-cantidad\", nuevaCantidad + 1);\n                            }\n                        });\n                        \n                        \/\/ ACTUALIZAR CANTIDAD EN M\u00d3VIL\n                        var cantidadMobile = document.querySelector(\"#cantidad-mobile-\" + sku);\n                        if (cantidadMobile) {\n                            cantidadMobile.textContent = nuevaCantidad;\n                        }\n                        \n                        \/\/ ACTUALIZAR data-cantidad EN BOTONES M\u00d3VILES\n                        var botonesMobile = document.querySelectorAll(\".carrito-item-mobile[data-sku=\\\"\" + sku + \"\\\"] .btn-cantidad-mobile\");\n                        botonesMobile.forEach(function(btn) {\n                            var esMenos = btn.classList.contains(\"btn-cantidad-menos\");\n                            var esMas = btn.classList.contains(\"btn-cantidad-mas\");\n                            if (esMenos) {\n                                btn.setAttribute(\"data-cantidad\", nuevaCantidad - 1);\n                            } else if (esMas) {\n                                btn.setAttribute(\"data-cantidad\", nuevaCantidad + 1);\n                            }\n                        });\n                        \n                        \/\/ ACTUALIZAR SUBTOTAL\n                        var subtotalDesktop = document.querySelector(\"#subtotal-\" + sku);\n                        var subtotalMobile = document.querySelector(\"#subtotal-mobile-\" + sku);\n                        \n                        var precioElement = document.querySelector(\".carrito-item[data-sku=\\\"\" + sku + \"\\\"] .col-precio\");\n                        if (precioElement) {\n                            var precioTexto = precioElement.textContent.replace(\/[$,.]\/g, \"\");\n                            var precio = parseInt(precioTexto);\n                            var nuevoSubtotal = precio * nuevaCantidad;\n                            var subtotalFormateado = \"$\" + formatearPrecio(nuevoSubtotal);\n                            \n                            if (subtotalDesktop) subtotalDesktop.textContent = subtotalFormateado;\n                            if (subtotalMobile) subtotalMobile.textContent = subtotalFormateado;\n                        }\n                    }\n                    \n                    \/\/ ACTUALIZAR TOTAL\n                    var totalElement = document.querySelector(\"#total-carrito\");\n                    if (totalElement) {\n                        totalElement.textContent = \"$\" + formatearPrecio(data.data.total);\n                    }\n                    \n                } else {\n                    alert(\"Error: \" + (data.data.mensaje || \"No se pudo actualizar el carrito\"));\n                }\n            })\n            .catch(function() {\n                alert(\"Error al actualizar el carrito. Por favor, intenta nuevamente.\");\n            });\n        }\n        \n        \/\/ ========================================================\n        \/\/ DELEGACI\u00d3N DE EVENTOS\n        \/\/ ========================================================\n        document.addEventListener(\"click\", function(e) {\n            var target = e.target;\n            \n            \/\/ Botones de cantidad en escritorio\n            if (target.classList.contains(\"btn-cantidad-menos\") || target.classList.contains(\"btn-cantidad-mas\")) {\n                e.preventDefault();\n                var sku = target.getAttribute(\"data-sku\");\n                var nuevaCantidad = parseInt(target.getAttribute(\"data-cantidad\"));\n                var nombre = target.getAttribute(\"data-nombre\") || \"producto\";\n                actualizarCarrito(sku, nuevaCantidad, nombre);\n            }\n            \n            \/\/ Botones de cantidad en m\u00f3vil\n            if (target.classList.contains(\"btn-cantidad-mobile\")) {\n                e.preventDefault();\n                var sku = target.getAttribute(\"data-sku\");\n                var nuevaCantidad = parseInt(target.getAttribute(\"data-cantidad\"));\n                var nombre = target.getAttribute(\"data-nombre\") || \"producto\";\n                actualizarCarrito(sku, nuevaCantidad, nombre);\n            }\n            \n            \/\/ Botones de eliminar\n            if (target.classList.contains(\"btn-eliminar\") || target.classList.contains(\"btn-eliminar-mobile\")) {\n                e.preventDefault();\n                var sku = target.getAttribute(\"data-sku\");\n                var nombre = target.getAttribute(\"data-nombre\") || \"producto\";\n                if (confirm(\"\u00bfEst\u00e1s seguro de que quieres eliminar \\\"\" + nombre + \"\\\" del carrito?\")) {\n                    actualizarCarrito(sku, 0, nombre);\n                }\n            }\n        });\n\n        \/\/ Evitar que un doble clic cree dos intentos de pago.\n        var formularioPago = document.querySelector(\".form-pagar-transbank\");\n        if (formularioPago) {\n            formularioPago.addEventListener(\"submit\", function() {\n                var botonPago = formularioPago.querySelector(\".btn-pagar\");\n                if (botonPago) {\n                    botonPago.disabled = true;\n                    botonPago.textContent = \"Conectando con Webpay...\";\n                }\n            });\n        }\n        \n    });\n    <\/script><style>\n        .carrito-container{max-width:1000px;margin:30px auto;padding:20px;background:#fff;border-radius:16px;box-shadow:0 2px 20px rgba(0,0,0,0.06);font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif}\n        .carrito-titulo{font-size:24px;font-weight:700;color:#1a1a2e;margin-bottom:20px}\n        .carrito-vacio{text-align:center;padding:40px 20px}\n        .carrito-vacio p{font-size:18px;color:#64748b;margin-bottom:20px}\n        .carrito-tabla-desktop{width:100%}\n        .carrito-header{display:grid;grid-template-columns:80px 2fr 1fr 1fr 1fr 50px;gap:10px;padding:12px 0;border-bottom:2px solid #e2e8f0;font-weight:600;color:#64748b;font-size:14px;text-transform:uppercase;letter-spacing:.5px}\n        .carrito-item{display:grid;grid-template-columns:80px 2fr 1fr 1fr 1fr 50px;gap:10px;padding:16px 0;border-bottom:1px solid #f1f3f5;align-items:center}\n        .carrito-item-mobile{display:none;background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;border:1px solid #e2e8f0;box-shadow:0 2px 8px rgba(0,0,0,0.04)}\n        .carrito-item-mobile:hover{box-shadow:0 4px 16px rgba(0,0,0,0.08)}\n        .carrito-mobile-header{display:flex;align-items:center;gap:12px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e2e8f0}\n        .mobile-imagen{flex-shrink:0}\n        .carrito-imagen-mobile{width:60px;height:60px;object-fit:contain;background:#fff;border-radius:8px;padding:4px}\n        .carrito-imagen-placeholder-mobile{width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px;font-size:28px}\n        .mobile-info{flex:1;display:flex;flex-direction:column}\n        .mobile-nombre{font-weight:600;color:#1a1a2e;font-size:15px}\n        .mobile-sku{font-size:12px;color:#94a3b8}\n        .mobile-eliminar{flex-shrink:0}\n        .btn-eliminar-mobile{color:#dc2626;font-size:14px;font-weight:600;padding:4px 12px;border-radius:6px;background:#fee2e2;border:none;cursor:pointer;transition:all .2s ease}\n        .btn-eliminar-mobile:hover{background:#fecaca;color:#b91c1c}\n        .carrito-mobile-body{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}\n        .mobile-precio,.mobile-cantidad,.mobile-subtotal{display:flex;flex-direction:column;align-items:center;text-align:center}\n        .mobile-label{font-size:11px;text-transform:uppercase;color:#94a3b8;font-weight:600;letter-spacing:.5px;margin-bottom:4px}\n        .mobile-valor{font-weight:600;color:#1a1a2e;font-size:15px}\n        .btn-cantidad-mobile{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#e2e8f0;color:#1a1a2e;border:none;cursor:pointer;font-weight:700;font-size:16px;transition:all .2s ease}\n        .btn-cantidad-mobile:hover{background:#cbd5e1;transform:scale(1.05)}\n        .cantidad-numero-mobile{min-width:24px;text-align:center;font-weight:600;font-size:15px;margin:0 4px}\n        .col-imagen{display:flex;align-items:center;justify-content:center}\n        .carrito-imagen{width:60px;height:60px;object-fit:contain;background:#f8fafc;border-radius:8px;padding:4px}\n        .carrito-imagen-placeholder{width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:#f8fafc;border-radius:8px;font-size:28px}\n        .col-producto{display:flex;flex-direction:column;gap:2px}\n        .carrito-nombre{font-weight:500;color:#1a1a2e;font-size:15px}\n        .carrito-sku{font-size:12px;color:#94a3b8}\n        .col-precio,.col-subtotal{font-weight:500;color:#0f172a;font-size:15px}\n        .col-cantidad{display:flex;align-items:center;gap:8px}\n        .btn-cantidad{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#f1f3f5;color:#1a1a2e;border:none;cursor:pointer;font-weight:700;font-size:16px;transition:all .2s}\n        .btn-cantidad:hover{background:#e2e4e8;transform:scale(1.05)}\n        .cantidad-numero{min-width:24px;text-align:center;font-weight:600;font-size:15px}\n        .col-acciones{display:flex;align-items:center;justify-content:center}\n        .btn-eliminar{color:#dc2626;font-size:14px;font-weight:600;padding:4px 12px;border-radius:6px;background:#fee2e2;border:none;cursor:pointer;transition:all .2s ease}\n        .btn-eliminar:hover{background:#fecaca;color:#b91c1c}\n        .carrito-footer{margin-top:20px;padding-top:20px;border-top:2px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}\n        .carrito-total{font-size:20px;font-weight:700;color:#1a1a2e}\n        .total-monto{color:#0073aa}\n        .carrito-acciones{display:flex;gap:12px;flex-wrap:wrap}\n        .btn-seguir-comprando{background:#f1f3f5;color:#1a1a2e;padding:12px 24px;border-radius:50px;text-decoration:none;font-weight:600;font-size:14px;transition:all .3s}\n        .btn-seguir-comprando:hover{background:#e2e4e8;transform:translateY(-2px)}\n        .btn-vaciar{background:#fee2e2;color:#dc2626;padding:12px 24px;border-radius:50px;border:none;cursor:pointer;font-weight:600;font-size:14px;transition:all .3s}\n        .btn-vaciar:hover{background:#fecaca;transform:translateY(-2px)}\n        .form-pagar-transbank{display:inline-flex;margin:0}\n        .btn-pagar{background:#1a1a2e;color:#fff;padding:12px 32px;border-radius:50px;text-decoration:none;font-weight:600;font-size:14px;transition:all .3s;border:none;cursor:pointer;font-family:inherit}\n        .btn-pagar:disabled{opacity:.7;cursor:wait;transform:none}\n        .btn-pagar:hover{background:#2d2d44;transform:translateY(-2px);box-shadow:0 8px 25px rgba(26,26,46,0.25)}\n        @media(max-width:768px){.carrito-container{padding:15px;margin:15px}\n        .carrito-titulo{font-size:20px}\n        .carrito-tabla-desktop{display:none}\n        .carrito-item{display:none}\n        .carrito-item-mobile{display:block}\n        .carrito-footer{flex-direction:column;align-items:stretch;gap:12px}\n        .carrito-acciones{flex-direction:column}\n        .form-pagar-transbank{width:100%}\n        .btn-seguir-comprando,.btn-vaciar,.btn-pagar{text-align:center;padding:14px 20px;font-size:15px;width:100%}\n        .carrito-total{text-align:center;font-size:18px}}\n        @media(max-width:480px){.carrito-container{padding:12px;margin:10px}\n        .carrito-item-mobile{padding:14px}\n        .carrito-mobile-body{grid-template-columns:1fr 1fr 1fr;gap:6px}\n        .carrito-imagen-mobile{width:50px;height:50px}\n        .mobile-nombre{font-size:14px}\n        .mobile-sku{font-size:11px}\n        .mobile-valor{font-size:14px}\n        .btn-cantidad-mobile{width:26px;height:26px;font-size:14px}\n        .cantidad-numero-mobile{font-size:14px;min-width:20px}}\n    <\/style>\n\n\n\n<div style=\"height:15px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-186","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=\/wp\/v2\/pages\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=186"}],"version-history":[{"count":3,"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=\/wp\/v2\/pages\/186\/revisions"}],"predecessor-version":[{"id":189,"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=\/wp\/v2\/pages\/186\/revisions\/189"}],"wp:attachment":[{"href":"https:\/\/prueba.todoyeso.cl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}