{"id":27491,"date":"2026-02-11T16:31:44","date_gmt":"2026-02-11T19:31:44","guid":{"rendered":"https:\/\/rutiniwines.com\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/"},"modified":"2026-03-05T16:09:08","modified_gmt":"2026-03-05T19:09:08","slug":"%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6","status":"publish","type":"page","link":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/","title":{"rendered":"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1da25be7 wp-block-columns-is-layout-flex\" id=\"vinos-box\" style=\"margin-bottom:0;padding-top:var(--wp--preset--spacing--80);padding-bottom:0\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h1 class=\"wp-block-heading has-text-align-center animated fadeInUp\">\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6<\/h1>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns margin-b-vinos is-layout-flex wp-container-core-columns-is-layout-159f51c6 wp-block-columns-is-layout-flex\" id=\"vinos-box\" style=\"margin-top:0\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns are-vertically-aligned-center animated fadeIn is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" id=\"col-in-vino\">\n<div class=\"wp-block-column is-vertically-aligned-center pad-box-in is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading has-medium-font-size\" style=\"text-transform:uppercase\"><strong>\u8bf7\u8f93\u5165\u9152\u74f6\u5c01\u6761\u4e0a\u7684\u5b57\u6bcd\u6570\u5b57\u4ee3\u7801\u3002<\/strong><\/h3>\n\n\n\n<div class=\"form-section\" id=\"form-container-main\">\n    <form method=\"post\" onsubmit=\"handleSubmit(event)\">\n        <div class=\"rutini-form-container\">\n            <input type=\"text\" id=\"tagNumberInput\" name=\"tagNumber\" class=\"rutini-input\" placeholder=\"\u8f93\u5165\u5b57\u6bcd\u6570\u5b57\u4ee3\u7801\" onfocus=\"hiddenInvalid()\" autocomplete=\"off\"\/>\n            \n            <input type=\"hidden\" name=\"Lang\" id=\"LangInput\"\/>\n            <input type=\"hidden\" name=\"sessionId\" id=\"sessionIdInput\"\/>\n\n            <button type=\"submit\" id=\"edit-submit\" class=\"rutini-btn\">\n \u9a8c\u8bc1\n            <\/button>\n        <\/div>\n\n        <div id=\"container-info-error\">\n            <h3>\u4ee3\u7801\u65e0\u6548\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\u3002 <\/h3>\n        <\/div>\n    <\/form>\n<\/div>\n\n<div id=\"info-codigo\">\n    \n    <div class=\"loader\"><\/div>\n    \n    <div id=\"contenido-response\" class=\"content\">\n        \n        <div id=\"container-iframe-errors\">\n            <h5 id=\"title-error\" style=\"color: #a89166; text-align:center; margin-bottom: 15px;\"><\/h5>\n            <h5 id=\"lockout-notice\" style=\"color: red !important; display: none; text-align:center;\">\n \u4ee3\u7801\u8f93\u5165\u9519\u8bef\u6b21\u6570\u8fc7\u591a\uff0c\u5df2\u9501\u5b9a 5 \u5206\u949f\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002 \n            <\/h5>\n            <iframe id=\"error-iframe\" src=\"\" frameborder=\"0\" style=\"width:100%; min-height:400px;\"><\/iframe>\n        <\/div>\n\n        <div id=\"content-response\" class=\"content-response\">\n            <div id=\"container-info-success\" class=\"col-info\">\n\n                <div style=\"display: flex; align-items: flex-start; gap: 20px; margin-bottom: 30px;\">\n                    <h1 class=\"ref-title\">\u672c\u74f6\u9632\u4f2a\u5c01\u6761\u4e3a\uff1a<\/h1>\n                    <div class=\"tag-wrapper\" style=\"margin: 0; display: flex; flex-direction: column; align-items: center;\">\n                        <img decoding=\"async\" id=\"image_tag_64\" src=\"\" alt=\"Bubble Tag\" style=\"max-width: 180px; padding: 5px; border: 1px solid #e5e5e5; border-radius: 4px;\"\/>\n                        <p class=\"ref-number\" style=\"margin-top: 12px; margin-bottom: 0;\"> <span id=\"num_tag\"><\/span><\/p>\n                    <\/div>\n                <\/div>\n                \n                <p class=\"instruction-text\">\n \u8bf7\u4ed4\u7ec6\u89c2\u5bdf\u5c4f\u5e55\u4e0a\u7684\u5c01\u6761\u3002<br\/> \u5c06\u5176\u6c14\u6ce1\u7684\u5f62\u72b6\u3001\u5927\u5c0f\u548c\u4f4d\u7f6e\u4e0e\u60a8\u9152\u74f6\u6807\u7b7e\u4e0a\u7684\u5c01\u6761\u8fdb\u884c\u6bd4\u5bf9\u3002  \n                <\/p>\n                \n                <p class=\"authenticity-text\">\n \u5c01\u6761\u5b8c\u597d\u4e14\u4e00\u81f4\uff0c\u5373\u53ef\u786e\u8ba4\u4e3a\u6b63\u54c1\u3002\n                <\/p>\n            <\/div>\n            \n            <div class=\"col-img\">\n                <img decoding=\"async\" id=\"image_tag_64_bottleshot\" src=\"\" alt=\"\u9152\u74f6\" class=\"bottle-img\"\/>\n            <\/div>\n        <\/div>\n\n        <div id=\"wine-description-section\" class=\"wine-desc-container\">\n            <hr class=\"rutini-divider\"\/>\n            <div class=\"wine-desc-content\">\n                <h2 id=\"prd_name\"><\/h2>\n                <div class=\"gold-line\"><\/div>\n                <div id=\"desc\"><\/div>\n                <a id=\"prd_url\" href=\"\" target=\"_blank\">\n                    <button class=\"rutini-btn-outline\">\u66f4\u591a\u4fe1\u606f<\/button>\n                <\/a>\n            <\/div>\n            <hr class=\"rutini-divider\"\/>\n        <\/div>\n\n        <div id=\"container-bubbles\">\n            <h5 id=\"title-bubbles\" style=\"text-align:center; color:#a89166;\"><\/h5>\n            \n            <div class=\"bubble-list-class\"><\/div>\n\n            <form id=\"form-ccp\">\n                <input type=\"text\" name=\"cpp\" id=\"cppInput\" class=\"rutini-input\" placeholder=\"\u8f93\u5165CCP\u4ee3\u7801\" style=\"max-width: 150px;\"\/>\n                <input type=\"hidden\" name=\"sessionId\" id=\"sessionIdInputCPP\"\/>\n                <button type=\"submit\" class=\"rutini-btn\">\u9a8c\u8bc1<\/button>\n                <div id=\"container-info-error-ccp\">\n                    <h3>\u4ee3\u7801\u9519\u8bef<\/h3>\n                <\/div>\n            <\/form>\n        <\/div>\n        \n        <div style=\"text-align: center; margin-top: 30px;\">\n             <button onclick=\"resetSearch()\" class=\"rutini-btn-simple\">\u91cd\u65b0\u641c\u7d22<\/button>\n        <\/div>\n\n    <\/div>\n<\/div>\n\n<style>\n    \/* ================= ESTILOS RUTINI ================= *\/\n    .container-rutini-wrapper {\n        width: 100%;\n        max-width: 1400px;\n        margin: 0 auto;\n        padding: 60px 20px;\n        font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n        box-sizing: border-box;\n    }\n\n    .rutini-title {\n        text-align: center;\n        color: #a89166;\n        text-transform: uppercase;\n        letter-spacing: 2px;\n        font-weight: 400;\n        margin-bottom: 30px;\n        font-size: 24px;\n    }\n\n    \/* ESTILOS EXACTOS DE FIGMA PARA EL T\u00cdTULO *\/\n    .ref-title {\n        color: #000000;\n        font-family: \"Mr Eaves San OT\", sans-serif;\n        font-size: 22.857px;\n        font-style: normal;\n        font-weight: 700;\n        line-height: 34.182px;\n        letter-spacing: 0.269px;\n        text-transform: uppercase;\n        width: 221px;\n        margin: 0;\n    }\n\n    \/* FORMULARIO *\/\n    .rutini-form-container { display: flex; gap: 10px; max-width: 500px; }\n    .rutini-input { flex: 1; padding: 15px; border: 1px solid #ccc; background: #fdfdfd; color: #333; font-size: 16px; outline: none; border-radius: 0; }\n    .rutini-input:focus { border-color: #a89166; }\n    \/* ESTILOS DEL BOT\u00d3N Y ANIMACI\u00d3N HOVER *\/\n    \/* ESTILOS DEL BOT\u00d3N Y ANIMACI\u00d3N HOVER *\/\n    .rutini-btn {\n        background: #fff;\n        color: #a89166;\n        border: 1px solid #a89166;\n        padding: 0 30px;\n        text-transform: uppercase;\n        font-weight: bold;\n        letter-spacing: 1px;\n        cursor: pointer;\n        border-radius: 0;\n        position: relative;\n        overflow: hidden;\n        transition: color 0.5s ease;\n        z-index: 1; \n        font-family: \"Mr Eaves San OT\", sans-serif;\n        font-size: 12px;\n        outline: none;\n        box-shadow: none;\n    }\n\n    .rutini-btn::before {\n        content: \"\";\n        position: absolute;\n        left: 50%;\n        bottom: 0; \n        \/* Usamos scale(0) para que inicie en tama\u00f1o cero pero mantenga la proporci\u00f3n *\/\n        transform: translate(-50%, 50%) scale(0);\n        width: 400px;\n        height: 400px;\n        background: linear-gradient(90deg, #e7c391 0%, #b6926c 50%, #a89166 100%);\n        z-index: -1; \n        border-radius: 50%;\n        \/* Transicionamos SOLO el transform, esto evita que se deforme *\/\n        transition: transform 0.6s cubic-bezier(.4,0,.2,1);\n    }\n\n    .rutini-btn:hover,\n    .rutini-btn:focus,\n    .rutini-btn:active {\n        color: #fff;\n        outline: none !important;\n        box-shadow: none !important;\n        background: #fff;\n        border-color: #B6926C !important;\n        \n    }\n\n    .rutini-btn:hover::before {\n        \/* Al hacer hover, lo escalamos a su tama\u00f1o real (400px) *\/\n        transform: translate(-50%, 50%) scale(1);\n    }\n    .rutini-btn-simple { background: transparent; border: none; color: #999; text-decoration: underline; cursor: pointer; }\n\n    \/* MENSAJES DE ERROR *\/\n    #container-info-error, #container-info-error-ccp { display: none; color: #d9534f; text-align: center; margin-top: 15px; font-size: 14px; }\n\n    \/* RESULTADOS *\/\n    #info-codigo, #contenido-response, #container-iframe-errors, #content-response, #container-bubbles { display: none; width: 100%; }\n\n    #content-response { display: none; flex-direction: column; gap: 40px; margin-top: 40px; padding-top: 0; }\n\n    @media (min-width: 1024px) {\n        #content-response { display: none; grid-template-columns: 50% 50%; align-items: start; gap: 60px; }\n    }\n\n    \/* COLUMNA IZQUIERDA - INFO *\/\n    .col-info { text-align: left; padding: 20px; }\n    .ref-number { color: #000000; font-size: 18px; font-weight: 400; margin-bottom: 30px; }\n    #num_tag { color: #000;text-align: center; font-family: \"Mr Eaves San OT\"; font-size: 11.717px; font-style: normal; font-weight: 350; line-height: 21.632px; letter-spacing: 0.198px; }\n    .instruction-text, .authenticity-text { font-size: 15px; color: #333333; margin: 30px 0 25px; line-height: 1.7; font-weight: 400; }\n    \n    \/* COLUMNA DERECHA - IMAGEN *\/\n    .col-img { text-align: center; padding: 20px; }\n    .bottle-img { max-height: 650px; width: auto; max-width: 100%; object-fit: contain; }\n\n    \/* ================= NUEVA SECCI\u00d3N: DESCRIPCI\u00d3N DEL VINO ================= *\/\n    .wine-desc-container {\n        display: none;\n        width: 100%;\n        margin-top: 60px;\n    }\n    .rutini-divider {\n        border: none;\n        border-top: 1px solid #e5cc9d;\n        opacity: 0.5;\n        margin: 40px 0;\n    }\n    .wine-desc-content {\n        max-width: 800px;\n        margin: 0 auto;\n        text-align: left;\n    }\n    #prd_name {\n        font-family: 'Mr Eaves San OT', sans-serif;\n        font-size: 28px;\n        font-weight: 400;\n        color: #333;\n        margin-bottom: 10px;\n    }\n    .gold-line {\n        width: 40px;\n        height: 2px;\n        background: #a89166;\n        margin-bottom: 24px;\n    }\n    #desc {\n        font-size: 16px;\n        color: #666;\n        line-height: 1.8;\n        text-align: justify;\n        margin-bottom: 30px;\n    }\n    .rutini-btn-outline {\n        background: transparent;\n        border: 1px solid #a89166;\n        color: #a89166;\n        padding: 10px 25px;\n        text-transform: uppercase;\n        font-size: 12px;\n        letter-spacing: 1px;\n        cursor: pointer;\n        transition: 0.3s;\n    }\n    .rutini-btn-outline:hover { background: #a89166; color: #fff; }\n    #prd_url { display: none; text-decoration: none; } \n\n\n    \/* LOADER & BURBUJAS *\/\n    .loader { display: none; border: 3px solid #f3f3f3; border-top: 3px solid #a89166; border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; margin: 40px auto; }\n    @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n    .bubble-list-class { display: flex; flex-wrap: wrap; justify-content: center; gap: 15px; margin: 20px 0; }\n    .button-bubble { background: #fff; border: 1px solid #ddd; padding: 5px; cursor: pointer; transition: transform 0.2s; }\n    .button-bubble:hover { transform: scale(1.1); border-color: #a89166; }\n    #form-ccp { display: none; justify-content: center; gap: 10px; flex-wrap: wrap; margin-top: 20px; }\n\n    \/* AJUSTES RESPONSIVE *\/\n\n    @media (max-width: 1023px) {\n        .col-img {\n            text-align: center;\n            order: 2;\n            width: 100%;\n            padding: 10px 0 0 0;\n        }\n        .col-info {\n            text-align: left;\n            order: 1;\n            width: 100%;\n            padding: 10px 0 0 0;\n        }\n        .ref-title {\n            width: 100%;\n            font-size: 18px;\n        }\n        .rutini-form-container {\n            flex-direction: column;\n            gap: 10px;\n            width: 100%;\n        }\n        .rutini-input, .rutini-btn {\n            width: 100%;\n            box-sizing: border-box;\n        }\n        #content-response {\n            display: flex;\n            flex-direction: column;\n            gap: 20px;\n            margin-top: 20px;\n            padding: 0;\n        }\n        .bottle-img {\n            max-width: 90vw;\n            max-height: 300px;\n        }\n        .wine-desc-content {\n            padding: 0 5px;\n        }\n        .bubble-list-class {\n            gap: 8px;\n        }\n        #container-iframe-errors {\n            min-height: 60vh;\n        }\n        #error-iframe {\n            min-height: 60vh !important;\n            height: 80vh !important;\n        }\n    }\n\n    @media (max-width: 600px) {\n        .container-rutini-wrapper {\n            padding: 20px 2vw;\n        }\n        .rutini-title {\n            font-size: 18px;\n            margin-bottom: 18px;\n        }\n        .ref-title {\n            font-size: 15px;\n            line-height: 22px;\n        }\n        .rutini-form-container {\n            max-width: 100%;\n        }\n        .rutini-input, .rutini-btn {\n            font-size: 15px;\n            padding: 12px;\n        }\n        .bottle-img {\n            max-width: 98vw;\n            max-height: 180px;\n        }\n        .wine-desc-content {\n            font-size: 14px;\n        }\n        #desc {\n            font-size: 14px;\n        }\n        .rutini-btn-outline {\n            font-size: 11px;\n            padding: 8px 10px;\n        }\n        .bubble-list-class {\n            gap: 5px;\n        }\n        #container-iframe-errors {\n            min-height: 40vh;\n        }\n        #error-iframe {\n            min-height: 40vh !important;\n            height: 60vh !important;\n        }\n    }\n\n    @media (max-width: 400px) {\n        .rutini-title {\n            font-size: 15px;\n        }\n        .ref-title {\n            font-size: 12px;\n        }\n        .bottle-img {\n            max-width: 96vw;\n            max-height: 120px;\n        }\n        .rutini-input, .rutini-btn {\n            font-size: 13px;\n            padding: 8px;\n        }\n        .wine-desc-content {\n            font-size: 12px;\n        }\n        #desc {\n            font-size: 12px;\n        }\n        .rutini-btn-outline {\n            font-size: 10px;\n            padding: 6px 6px;\n        }\n    }\n\n    \/* Mejoras para el header y layout en mobile *\/\n    #contenido-response .rutini-header-block {\n        display: flex !important;\n        flex-direction: column !important;\n        align-items: flex-start !important;\n        gap: 10px !important;\n        margin-bottom: 20px !important;\n        padding: 0 !important;\n    }\n    #contenido-response .ref-title {\n        font-family: \"Mr Eaves San OT\", sans-serif !important;\n        font-size: 18px !important;\n        font-weight: 700 !important;\n        line-height: 24px !important;\n        letter-spacing: 0.2px !important;\n        color: #000000 !important;\n        text-transform: uppercase !important;\n        width: 100% !important;\n        min-width: 0 !important;\n        margin: 0 !important;\n        padding: 0 !important;\n        text-align: left !important;\n    }\n    #contenido-response .tag-wrapper {\n        margin: 0 !important;\n        padding: 0 !important;\n        flex-shrink: 0 !important;\n    }\n    #contenido-response .tag-wrapper img {\n        max-width: 120px !important;\n        height: auto !important;\n        display: block !important;\n        border: 1px solid #e5e5e5 !important;\n    }\n\n\/* Mejoras para mostrar el iframe de error como en la foto 2 *\/\n#container-iframe-errors {\n    width: 100%;\n    min-height: 80vh;\n    margin: 0;\n    background: transparent;\n    box-shadow: none;\n    border-radius: 0;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: flex-start;\n}\n#error-iframe {\n    width: 100% !important;\n    min-height: 120vh !important;\n    height: 160vh !important;\n    max-height: none !important;\n    border: none !important;\n    background: transparent !important;\n    box-sizing: border-box;\n\n}\n\n<\/style>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/dompurify\/3.0.9\/purify.min.js\"><\/script>\n\n<script>\n    const API_URL = \"\/auth2\/prooftag-rutini\/prooftag-auth-ajax.php\"; \n\n    async function handleSubmit(event) {\n        if(event) event.preventDefault();\n        const tagInput = document.getElementById(\"tagNumberInput\");\n        const tagNumber = tagInput.value.trim();\n        const sessionID = document.getElementById(\"sessionIdInput\").value;\n\n        if (tagNumber.length < 1) {\n            document.getElementById(\"container-info-error\").style.display = \"block\";\n            return;\n        }\n\n        \/\/ Limpiar entorno WP\n        document.querySelectorAll('.desc-before, .wp-block-heading, .rutini-faq-wrapper').forEach(function(el) {\n            el.style.display = 'none';\n        });\n\n        document.getElementById(\"container-info-error\").style.display = \"none\";\n        document.getElementById(\"form-container-main\").style.display = \"none\";\n        document.getElementById(\"info-codigo\").style.display = \"block\";\n        document.querySelector(\".loader\").style.display = \"block\";\n        document.getElementById(\"contenido-response\").style.display = \"none\";\n\n        try {\n            const res = await fetch(API_URL, {\n                method: \"POST\",\n                headers: { \"Content-Type\": \"application\/json\" },\n                body: JSON.stringify({ tag: tagNumber, sessionID: sessionID }),\n            });\n            const json = await res.json();\n            document.querySelector(\".loader\").style.display = \"none\";\n            document.getElementById(\"contenido-response\").style.display = \"block\";\n\n            if (json.data) {\n                const data = json.data;\n                console.log('Data:', data);\n                if (data.msg_id === \"0\") {\n                    renderSuccess(data);\n                } \n                else if (data.iframe_url) {\n                    renderErrorIframe(data, json.msg);\n                }\n                else if (data.bubbles || data.type === \"CONTROL_BUBBLE\") {\n                    renderBubbles(data, tagNumber, json.msg);\n                }\n                else {\n                    document.getElementById(\"container-info-error\").style.display = \"block\";\n                    document.getElementById(\"form-container-main\").style.display = \"block\";\n                    document.getElementById(\"info-codigo\").style.display = \"none\";\n                }\n            }\n        } catch (error) {\n            console.error(error);\n            resetSearch();\n            document.getElementById(\"container-info-error\").style.display = \"block\";\n        }\n    }\n\n    \/\/ Soporte para autocompletar tag y sessionId desde la URL y ejecutar handleSubmit autom\u00e1ticamente\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        let urlParams = new URLSearchParams(window.location.search);\n        let tag = urlParams.get(\"tag\");\n        let sessionId = urlParams.get(\"sessionId\");\n        if (tag || sessionId) {\n            if (tag) document.getElementById(\"tagNumberInput\").value = tag;\n            if (sessionId) document.getElementById(\"sessionIdInput\").value = sessionId;\n            handleSubmit();\n        }\n    });\n\n    function renderSuccess(data) {\n        document.getElementById(\"container-iframe-errors\").style.display = \"none\";\n        document.getElementById(\"container-bubbles\").style.display = \"none\";\n        \n        const wpColumn = document.querySelector('.wp-block-column.is-vertically-aligned-center.efecto-corte-gris');\n        if (wpColumn) { wpColumn.style.display = \"none\"; }\n        \n        \/\/ RENDERIZAR FILA 1 (Botella y Sello)\n        const contentResponse = document.getElementById(\"content-response\");\n        if (window.innerWidth >= 1024) {\n            contentResponse.style.display = \"grid\";\n        } else {\n            contentResponse.style.display = \"flex\";\n        }\n\n        const imgBottle = document.getElementById(\"image_tag_64_bottleshot\");\n        if (data.prd_image_64) {\n            imgBottle.src = \"data:image\/jpg;base64,\" + data.prd_image_64;\n            imgBottle.style.display = \"inline-block\";\n        } else {\n            imgBottle.style.display = \"none\";\n        }\n\n        document.getElementById(\"image_tag_64\").src = \"data:image\/jpg;base64,\" + data.image_tag_64;\n        document.getElementById(\"num_tag\").innerText = data.num_tag;\n\n        \/\/ RENDERIZAR FILA 2 (Descripci\u00f3n del vino con DOMPurify)\n        const wineDescSection = document.getElementById(\"wine-description-section\");\n        \n        if (data.prd_name || data.prd_desc) {\n            document.getElementById(\"prd_name\").innerText = data.prd_name;\n            \n            \/\/ Usamos DOMPurify para limpiar el HTML (Exactamente como en la referencia)\n            const cleanDesc = DOMPurify.sanitize(data.prd_desc || \"\");\n            document.getElementById(\"desc\").innerHTML = cleanDesc;\n\n            const btnUrl = document.getElementById(\"prd_url\");\n            if (data.prd_url) {\n                btnUrl.href = data.prd_url;\n                btnUrl.style.display = \"inline-block\";\n            } else {\n                btnUrl.style.display = \"none\";\n            }\n            \n            wineDescSection.style.display = \"block\";\n        } else {\n            wineDescSection.style.display = \"none\";\n        }\n    }\n\n    \/\/ Convierte una URL relativa en absoluta para el iframe\n    function getAbsoluteIframeUrl(iframe_url) {\n        if (\/^https?:\\\/\\\/\/.test(iframe_url)) return iframe_url;\n        \/\/ Si es relativa, agreg\u00e1 el dominio base correcto\n        return \"https:\/\/rutiniwines.com\/\" + iframe_url.replace(\/^\\\/+\/, \"\");\n    }\n\n    \/\/ Muestra el iframe de error seg\u00fan la documentaci\u00f3n de Prooftag\n    function renderErrorIframe(data, msg) {\n        \/\/ Oculta todos los bloques de resultados\n        document.getElementById(\"content-response\").style.display = \"none\";\n        document.querySelectorAll('.wp-block-column.is-vertically-aligned-center.efecto-corte-gris').forEach(function(el) {\n        el.style.display = \"none\";\n        });\n        document.getElementById(\"wine-description-section\").style.display = \"none\";\n        document.getElementById(\"container-bubbles\").style.display = \"none\";\n        \/\/ Muestra el contenedor del iframe\n        document.getElementById(\"container-iframe-errors\").style.display = \"flex\";\n        \/\/ Muestra el mensaje de error\/informaci\u00f3n\n        document.getElementById(\"title-error\").innerText = msg || \"Ocurri\u00f3 un error\";\n        \/\/ Asigna la URL al iframe (absoluta si es necesario)\n        if (data.iframe_url) {\n            document.getElementById(\"error-iframe\").src = getAbsoluteIframeUrl(data.iframe_url);\n        } else {\n            document.getElementById(\"error-iframe\").src = \"\";\n        }\n    }\n\n    function renderBubbles(data, tagNumber, msg) {\n        document.getElementById(\"content-response\").style.display = \"none\";\n        document.getElementById(\"wine-description-section\").style.display = \"none\";\n        document.getElementById(\"container-iframe-errors\").style.display = \"none\";\n        \n        const container = document.getElementById(\"container-bubbles\");\n        container.style.display = \"block\";\n        document.getElementById(\"title-bubbles\").innerText = msg;\n        const listContainer = container.querySelector(\".bubble-list-class\");\n        listContainer.innerHTML = \"\";\n\n        \/\/ Si hay burbujas, mostrar botones de burbujas\n        if (data.type === \"CONTROL_BUBBLE\" && data.bubbles) {\n            document.getElementById(\"form-ccp\").style.display = \"none\";\n            data.bubbles.forEach(bubble => {\n                const btn = document.createElement(\"button\");\n                btn.className = \"button-bubble\";\n                btn.onclick = () => handleBubblesSubmit(tagNumber, data.session_id, bubble.dataValue);\n                const img = document.createElement(\"img\");\n                img.src = \"data:image\/jpg;base64,\" + bubble.dataContent;\n                btn.appendChild(img);\n                listContainer.appendChild(btn);\n            });\n        } else {\n            console.log('hola');\n            \/\/ Si requiere CPP, mostrar el formulario CPP\n            document.getElementById(\"form-ccp\").style.display = \"flex\";\n            \/\/ Manejar el submit del formulario CPP\n            const formCCP = document.getElementById(\"form-ccp\");\n            formCCP.onsubmit = async function(e) {\n                e.preventDefault();\n                const cppValue = document.getElementById(\"cppInput\").value.trim();\n                document.getElementById(\"container-info-error-ccp\").style.display = \"none\";\n                if (!cppValue) {\n                    document.getElementById(\"container-info-error-ccp\").style.display = \"block\";\n                    return;\n                }\n                const sesionid = document.getElementById(\"sessionIdInputCPP\").value = data.session_id || data.sessionID || \"\";\n                console.log('Session ID:', sesionid);\n                try {\n                    const res = await fetch(API_URL, {\n                        method: \"POST\",\n                        headers: { \"Content-Type\": \"application\/json\" },\n                        body: JSON.stringify({\n                            tag: tagNumber,\n                            type: \"1\",\n                            control_key_value: cppValue,\n                            control_key_id: data.control_key_id || \"\",\n                            control_key_name: data.control_key_name || \"\",\n                            control_key_label: data.control_key_label || \"\",\n                            control_session_id: data.session_id || data.sessionID || document.getElementById(\"sessionIdInputCPP\").value\n                        })\n                    });\n                    const json = await res.json();\n                    if (json.data && json.data.msg_id === \"0\") {\n                        \/\/ CPP correcto, mostrar \u00e9xito\n                        renderSuccess(json.data);\n                    } else {\n                        document.getElementById(\"container-info-error-ccp\").style.display = \"block\";\n                    }\n                } catch (err) {\n                    document.getElementById(\"container-info-error-ccp\").style.display = \"block\";\n                }\n            };\n        }\n    }\n\n    \/\/ Funci\u00f3n para validar la burbuja seleccionada\n    async function handleBubblesSubmit(tagNumber, sessionId, dataValue) {\n        try {\n            document.querySelector(\".loader\").style.display = \"block\";\n            const res = await fetch(API_URL, {\n                method: \"POST\",\n                headers: { \"Content-Type\": \"application\/json\" },\n                body: JSON.stringify({\n                    tag: tagNumber,\n                    type: \"2\",\n                    control_session_id: sessionId,\n                    control_bubble_index: dataValue\n                })\n            });\n            const json = await res.json();\n            document.querySelector(\".loader\").style.display = \"none\";\n            if (json.data) {\n                const data = json.data;\n                \/\/ Si es \u00e9xito\n                if (data.msg_id === \"0\") {\n                    renderSuccess(data);\n                } else if (data.msg_id === \"20\") {\n                    \/\/ Sesi\u00f3n expirada\n                    document.getElementById(\"lockout-notice\").style.display = \"flex\";\n                    document.getElementById(\"lockout-notice\").innerHTML = \"La sesi\u00f3n ha expirado desde la \u00faltima llamada.\";\n                    \/\/ Si el backend retorna bubbles o control_key, volver a mostrar el formulario correspondiente\n                    console.log(\"JSDAA\");\n                     renderErrorIframe(data, json.msg)\n                } else if (data.iframe_url) {\n                    \/\/ Error con iframe\n                    renderErrorIframe(data, json.msg);\n                } else {\n                    \/\/ Error gen\u00e9rico\n                    document.getElementById(\"container-info-error-ccp\").style.display = \"block\";\n                }\n            }\n        } catch (error) {\n            document.querySelector(\".loader\").style.display = \"none\";\n            document.getElementById(\"container-info-error-ccp\").style.display = \"block\";\n        }\n    }\n\n    function resetSearch() {\n        document.getElementById(\"form-container-main\").style.display = \"block\";\n        document.getElementById(\"info-codigo\").style.display = \"none\";\n        document.getElementById(\"wine-description-section\").style.display = \"none\";\n        document.getElementById(\"tagNumberInput\").value = \"\";\n        document.getElementById(\"container-info-error\").style.display = \"none\";\n        \/\/ Limpia el iframe de error\n        document.getElementById(\"error-iframe\").src = \"\";\n        const wpColumn = document.querySelector('.wp-block-column.is-vertically-aligned-center.efecto-corte-gris');\n        if (wpColumn) { wpColumn.style.display = \"block\"; }\n    }\n    \/\/ Asegura que la funci\u00f3n hiddenInvalid est\u00e9 definida para evitar errores en consola\n    function hiddenInvalid() {\n        var el = document.getElementById(\"container-info-error\");\n        if (el) el.style.display = \"none\";\n    }\n<\/script>\n\n\n\n<p class=\"desc-before\">Rutini Wines \u5728\u90e8\u5206\u7cbe\u9009\u4ea7\u54c1\u7cfb\u5217\u4e2d\u91c7\u7528\u56fd\u9645\u6eaf\u6e90\u7cfb\u7edf\uff0c\u8fd9\u662f\u6211\u4eec\u5728\u8461\u8404\u9152\u917f\u9020\u8fc7\u7a0b\u4e2d\u5bf9\u54c1\u8d28\u3001\u4e25\u8c28\u4e0e\u5353\u8d8a\u627f\u8bfa\u7684\u4f53\u73b0\u3002<br\/><br\/>\u8be5\u5c01\u6761\u91c7\u7528\u72ec\u4e00\u65e0\u4e8c\u3001\u65e0\u6cd5\u590d\u5236\u7684\u7ed3\u6784\uff0c\u5e76\u4e0e\u4e8c\u7ef4\u7801\u548c\u5b57\u6bcd\u6570\u5b57\u4ee3\u7801\u76f8\u5173\u8054\uff0c\u4f7f\u5f97\u6bcf\u4e00\u74f6\u5e26\u6709\u6b64\u5c01\u6761\u7684\u8461\u8404\u9152\u5747\u53ef\u5355\u72ec\u9a8c\u8bc1\u3002<br\/><br\/>\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u9a8c\u8bc1\u540e\u53ef\u80fd\u4f1a\u8df3\u8f6c\u81f3\u673a\u6784\u901a\u7528\u9875\u9762\uff0c\u4f46\u8fd9\u5e76\u4e0d\u5f71\u54cd\u4ea7\u54c1\u7684\u771f\u5b9e\u6027\u3002<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center efecto-corte-gris is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full foto-vino\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"723\" src=\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2026\/02\/PROOF.png\" alt=\"\" class=\"wp-image-27328\" srcset=\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2026\/02\/PROOF.png 732w, https:\/\/rutiniwines.com\/wp-content\/uploads\/2026\/02\/PROOF-300x296.png 300w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" id=\"vinos-box\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" id=\"col-in-vino\">\n<h1 class=\"wp-block-heading has-text-align-center animated fadeInUp\">\u5e38\u89c1\u95ee\u9898 \u2013 \u9632\u4f2a\u9a8c\u8bc1 | Rutini Wines<\/h1>\n\n\n\n<div class=\"rutini-faq-wrapper\">\n\n    <details class=\"rutini-acordeon\">\n        <summary>\u6240\u6709 Rutini Wines \u7684\u8461\u8404\u9152\u90fd\u6709\u9632\u4f2a\u5c01\u6761\u5417\uff1f<\/summary>\n        <div class=\"faq-content\">\n            <p>\u4e0d\u662f\u3002\u8be5\u7cfb\u7edf\u4ec5\u5e94\u7528\u4e8e\u4ea7\u54c1\u7ec4\u5408\u4e2d\u7684\u90e8\u5206\u7cfb\u5217\u3002\u6240\u6709\u8461\u8404\u9152\u5747\u7b26\u5408\u76f8\u540c\u7684\u54c1\u8d28\u548c\u4ea7\u5730\u6807\u51c6\u3002  <\/p>\n        <\/div>\n    <\/details>\n\n    <details class=\"rutini-acordeon\">\n        <summary>\u8be5\u5c01\u6761\u80fd\u9a8c\u8bc1\u4ec0\u4e48\uff1f<\/summary>\n        <div class=\"faq-content\">\n            <p>\u4f5c\u4e3a\u56fd\u9645\u6eaf\u6e90\u7cfb\u7edf\u7684\u4e00\u90e8\u5206\uff0c\u5b83\u7528\u4e8e\u5bf9\u5e26\u6709\u8be5\u5c01\u6761\u7684\u6bcf\u4e00\u74f6\u9152\u8fdb\u884c\u5355\u72ec\u9a8c\u8bc1\u3002<\/p>\n        <\/div>\n    <\/details>\n\n    <details class=\"rutini-acordeon\">\n        <summary>\u6211\u626b\u63cf\u4ee3\u7801\u540e\u88ab\u8df3\u8f6c\u5230\u4e00\u4e2a\u673a\u6784\u9875\u9762\uff0c\u8fd9\u6b63\u5e38\u5417\uff1f <\/summary>\n        <div class=\"faq-content\">\n            <p>\u662f\u7684\u3002\u8fd9\u4e0d\u4f1a\u5f71\u54cd\u4ea7\u54c1\u7684\u771f\u5b9e\u6027\uff0c\u4e5f\u662f\u540c\u4e00\u9a8c\u8bc1\u4f53\u7cfb\u7684\u4e00\u90e8\u5206\u3002 <\/p>\n        <\/div>\n    <\/details>\n\n    <details class=\"rutini-acordeon\">\n        <summary>\u6211\u53ef\u4ee5\u901a\u8fc7\u4ec0\u4e48\u90ae\u7bb1\u8fdb\u884c\u54a8\u8be2\uff1f<\/summary>\n        <div class=\"faq-content\">\n            <p>prooftag@rutiniwines.com<\/p>\n        <\/div>\n    <\/details>\n\n<\/div>\n\n<style>\n    \/* Centrar todo el bloque en la p\u00e1gina *\/\n    .rutini-faq-wrapper {\n        max-width: 800px; \/* Ancho m\u00e1ximo igual a la foto *\/\n        margin: 0 auto;   \/* Esto centra el bloque horizontalmente *\/\n        padding: 20px;\n        font-family: 'Mr Eaves San O', serif; \/* Tipograf\u00eda estilo Rutini *\/\n    }\n\n    .faq-title {\n        text-align: center;\n        font-weight: 400;\n        margin-bottom: 10px;\n        color: #333;\n    }\n\n\n\n    \/* Caja de cada pregunta *\/\n    details.rutini-acordeon {\n        background-color: #f8f8f8; \/* Gris muy clarito *\/\n        border: 1px solid #e5e5e5;\n        margin-bottom: 15px; \/* Separaci\u00f3n entre cajas *\/\n        transition: all 0.3s ease;\n    }\n\n    \/* Estilo cuando est\u00e1 abierto (Fondo blanco) *\/\n    details.rutini-acordeon[open] {\n        background-color: #ffffff;\n        border-color: #dcdcdc;\n        box-shadow: 0 5px 15px rgba(0,0,0,0.05);\n    }\n\n    \/* El texto de la pregunta (Click) *\/\n    summary {\n        padding: 20px;\n        font-size: 20px;\n        cursor: pointer;\n        list-style: none; \/* Quita el tri\u00e1ngulo feo por defecto *\/\n        position: relative;\n        font-weight: 400;\n        color: #1a1a1a;\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n    }\n\n    \/* Ocultar flecha nativa en navegadores webkit *\/\n    summary::-webkit-details-marker {\n        display: none;\n    }\n\n    \/* La flecha personalizada (V) a la derecha *\/\n    summary::after {\n        content: '';\n        width: 10px;\n        height: 10px;\n        border-right: 2px solid #333;\n        border-bottom: 2px solid #333;\n        transform: rotate(45deg); \/* Flecha hacia abajo *\/\n        transition: transform 0.3s ease;\n        margin-left: 20px;\n    }\n\n    \/* Girar la flecha cuando est\u00e1 abierto *\/\n    details.rutini-acordeon[open] summary::after {\n        transform: rotate(-135deg); \/* Flecha hacia arriba *\/\n        border-color: #a38b5e; \/* Se pone dorada *\/\n    }\n\n    \/* Contenido de la respuesta *\/\n    .faq-content {\n        padding: 0 20px 20px 20px;\n        color: #555;\n        line-height: 1.6;\n        font-family: sans-serif; \/* Texto de lectura m\u00e1s limpio *\/\n    }\n<\/style>\n\n<script>\n    \/\/ Este peque\u00f1o c\u00f3digo hace que cuando abras uno, se cierren los dem\u00e1s\n    const allDetails = document.querySelectorAll('.rutini-acordeon');\n\n    allDetails.forEach((targetDetail) => {\n        targetDetail.addEventListener('click', (e) => {\n            \/\/ Si estamos cerrando, no hacemos nada\n            if (targetDetail.hasAttribute('open')) return;\n\n            \/\/ Si estamos abriendo, cerramos todos los dem\u00e1s\n            allDetails.forEach((detail) => {\n                if (detail !== targetDetail) {\n                    detail.removeAttribute('open');\n                }\n            });\n        });\n    });\n<\/script>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-columns uag-hide-desktop uag-hide-tab uag-hide-mob is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" id=\"vinos-box\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" id=\"col-in-vino\">\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u6240\u6709 Rutini Wines \u7684\u8461\u8404\u9152\u90fd\u6709\u9632\u4f2a\u5c01\u6761\u5417\uff1f<\/summary>\n<p>asdadads<\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u8be5\u5c01\u6761\u80fd\u9a8c\u8bc1\u4ec0\u4e48\uff1f<\/summary>\n<p>asdadads<\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u6211\u626b\u63cf\u4ee3\u7801\u540e\u88ab\u8df3\u8f6c\u5230\u4e00\u4e2a\u673a\u6784\u9875\u9762\uff0c\u8fd9\u6b63\u5e38\u5417\uff1f <\/summary>\n<p>asdadads<\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>\u6211\u53ef\u4ee5\u901a\u8fc7\u4ec0\u4e48\u90ae\u7bb1\u8fdb\u884c\u54a8\u8be2\uff1f<\/summary>\n<p>asdadads<\/p>\n<\/details>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 \u8bf7\u8f93\u5165\u9152\u74f6\u5c01\u6761\u4e0a\u7684\u5b57\u6bcd\u6570\u5b57 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":24430,"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":"","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-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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-27491","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 - Bodega Rutini Wines<\/title>\n<meta name=\"description\" content=\"\u6765\u81ea\u4e4c\u79d1\u5c71\u8c37\u81ea\u6709\u8461\u8404\u56ed\uff08Gualtallary\u3001El Cepillo \u548c La Consulta\uff09\u7684\u4f18\u8d28\u5355\u4e00\u54c1\u79cd\u548c\u53cc\u54c1\u79cd\u8461\u8404\u9152\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rutiniwines.com\/zh-hans\/\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 - Bodega Rutini Wines\" \/>\n<meta property=\"og:description\" content=\"\u6765\u81ea\u4e4c\u79d1\u5c71\u8c37\u81ea\u6709\u8461\u8404\u56ed\uff08Gualtallary\u3001El Cepillo \u548c La Consulta\uff09\u7684\u4f18\u8d28\u5355\u4e00\u54c1\u79cd\u548c\u53cc\u54c1\u79cd\u8461\u8404\u9152\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rutiniwines.com\/zh-hans\/\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6\/\" \/>\n<meta property=\"og:site_name\" content=\"Bodega Rutini Wines\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-05T19:09:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1176\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/\",\"url\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/\",\"name\":\"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 - Bodega Rutini Wines\",\"isPartOf\":{\"@id\":\"https:\/\/rutiniwines.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg\",\"datePublished\":\"2026-02-11T19:31:44+00:00\",\"dateModified\":\"2026-03-05T19:09:08+00:00\",\"description\":\"\u6765\u81ea\u4e4c\u79d1\u5c71\u8c37\u81ea\u6709\u8461\u8404\u56ed\uff08Gualtallary\u3001El Cepillo \u548c La Consulta\uff09\u7684\u4f18\u8d28\u5355\u4e00\u54c1\u79cd\u548c\u53cc\u54c1\u79cd\u8461\u8404\u9152\u3002\",\"breadcrumb\":{\"@id\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#primaryimage\",\"url\":\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg\",\"contentUrl\":\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg\",\"width\":1176,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/rutiniwines.com\/zh-hans\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5bc6\u7801\u4fdd\u62a4\uff1a\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rutiniwines.com\/#website\",\"url\":\"https:\/\/rutiniwines.com\/\",\"name\":\"Bodega Rutini Wines\",\"description\":\"Valle de Uco - Mendoza - Argentina\",\"publisher\":{\"@id\":\"https:\/\/rutiniwines.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rutiniwines.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/rutiniwines.com\/#organization\",\"name\":\"Rutini Wines\",\"alternateName\":\"Rutini\",\"url\":\"https:\/\/rutiniwines.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/rutiniwines.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/06\/rutini.png\",\"contentUrl\":\"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/06\/rutini.png\",\"width\":313,\"height\":56,\"caption\":\"Rutini Wines\"},\"image\":{\"@id\":\"https:\/\/rutiniwines.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 - Bodega Rutini Wines","description":"\u6765\u81ea\u4e4c\u79d1\u5c71\u8c37\u81ea\u6709\u8461\u8404\u56ed\uff08Gualtallary\u3001El Cepillo \u548c La Consulta\uff09\u7684\u4f18\u8d28\u5355\u4e00\u54c1\u79cd\u548c\u53cc\u54c1\u79cd\u8461\u8404\u9152\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rutiniwines.com\/zh-hans\/\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6\/","og_locale":"zh_CN","og_type":"article","og_title":"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 - Bodega Rutini Wines","og_description":"\u6765\u81ea\u4e4c\u79d1\u5c71\u8c37\u81ea\u6709\u8461\u8404\u56ed\uff08Gualtallary\u3001El Cepillo \u548c La Consulta\uff09\u7684\u4f18\u8d28\u5355\u4e00\u54c1\u79cd\u548c\u53cc\u54c1\u79cd\u8461\u8404\u9152\u3002","og_url":"https:\/\/rutiniwines.com\/zh-hans\/\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6\/","og_site_name":"Bodega Rutini Wines","article_modified_time":"2026-03-05T19:09:08+00:00","og_image":[{"width":1176,"height":1080,"url":"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/","url":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/","name":"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 - Bodega Rutini Wines","isPartOf":{"@id":"https:\/\/rutiniwines.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#primaryimage"},"image":{"@id":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#primaryimage"},"thumbnailUrl":"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg","datePublished":"2026-02-11T19:31:44+00:00","dateModified":"2026-03-05T19:09:08+00:00","description":"\u6765\u81ea\u4e4c\u79d1\u5c71\u8c37\u81ea\u6709\u8461\u8404\u56ed\uff08Gualtallary\u3001El Cepillo \u548c La Consulta\uff09\u7684\u4f18\u8d28\u5355\u4e00\u54c1\u79cd\u548c\u53cc\u54c1\u79cd\u8461\u8404\u9152\u3002","breadcrumb":{"@id":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/"]}]},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#primaryimage","url":"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg","contentUrl":"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg","width":1176,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/rutiniwines.com\/zh-hans\/%e9%aa%8c%e8%af%81%e6%82%a8%e7%9a%84%e9%85%92%e7%93%b6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/rutiniwines.com\/zh-hans\/"},{"@type":"ListItem","position":2,"name":"\u5bc6\u7801\u4fdd\u62a4\uff1a\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6"}]},{"@type":"WebSite","@id":"https:\/\/rutiniwines.com\/#website","url":"https:\/\/rutiniwines.com\/","name":"Bodega Rutini Wines","description":"Valle de Uco - Mendoza - Argentina","publisher":{"@id":"https:\/\/rutiniwines.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rutiniwines.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"https:\/\/rutiniwines.com\/#organization","name":"Rutini Wines","alternateName":"Rutini","url":"https:\/\/rutiniwines.com\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/rutiniwines.com\/#\/schema\/logo\/image\/","url":"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/06\/rutini.png","contentUrl":"https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/06\/rutini.png","width":313,"height":56,"caption":"Rutini Wines"},"image":{"@id":"https:\/\/rutiniwines.com\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg",1176,1080,false],"thumbnail":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header-150x150.jpg",150,150,true],"medium":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header-300x276.jpg",300,276,true],"medium_large":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header-768x705.jpg",768,705,true],"large":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header-1024x940.jpg",1024,940,true],"1536x1536":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg",1176,1080,false],"2048x2048":["https:\/\/rutiniwines.com\/wp-content\/uploads\/2024\/09\/Linea-Rutini-Coleccion-Header.jpg",1176,1080,false]},"uagb_author_info":{"display_name":"adminrutini","author_link":"https:\/\/rutiniwines.com\/zh-hans\/author\/adminrutini\/"},"uagb_comment_info":0,"uagb_excerpt":"\u9a8c\u8bc1\u60a8\u7684\u9152\u74f6 \u8bf7\u8f93\u5165\u9152\u74f6\u5c01\u6761\u4e0a\u7684\u5b57\u6bcd\u6570\u5b57 [&hellip;]","_links":{"self":[{"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/pages\/27491","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=27491"}],"version-history":[{"count":3,"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/pages\/27491\/revisions"}],"predecessor-version":[{"id":27500,"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/pages\/27491\/revisions\/27500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/media\/24430"}],"wp:attachment":[{"href":"https:\/\/rutiniwines.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=27491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}