{"id":1229,"date":"2026-05-11T18:52:04","date_gmt":"2026-05-11T18:52:04","guid":{"rendered":"https:\/\/experiencetourcanada.com\/?page_id=1229"},"modified":"2026-05-11T19:45:01","modified_gmt":"2026-05-11T19:45:01","slug":"products","status":"publish","type":"page","link":"https:\/\/experiencetourcanada.com\/es\/products\/","title":{"rendered":"Products"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1229\" class=\"elementor elementor-1229\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-70bbc54 e-flex e-con-boxed e-con e-parent\" data-id=\"70bbc54\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-427d237 elementor-widget elementor-widget-html\" data-id=\"427d237\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- SHOPIFY MULTIPLE PRODUCTS INTEGRATION FOR WORDPRESS -->\n<!-- Cole este c\u00f3digo em um bloco HTML personalizado do WordPress -->\n\n<style>\n  .shopify-products-wrapper {\n    max-width: 1200px;\n    margin: 30px auto;\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n  }\n\n  .shopify-products-title {\n    text-align: center;\n    font-size: 32px;\n    font-weight: 700;\n    margin-bottom: 30px;\n    color: #1a1a1a;\n  }\n\n  .shopify-products-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n    gap: 25px;\n    padding: 0 15px;\n  }\n\n  .shopify-product-card {\n    background: white;\n    border-radius: 8px;\n    overflow: hidden;\n    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n    transition: transform 0.3s ease, box-shadow 0.3s ease;\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n  }\n\n  .shopify-product-card:hover {\n    transform: translateY(-4px);\n    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);\n  }\n\n  .shopify-product-image-container {\n    width: 100%;\n    height: 250px;\n    overflow: hidden;\n    background: #f5f5f5;\n  }\n\n  .shopify-product-image {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n  }\n\n  .shopify-product-info {\n    padding: 20px;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n    flex-grow: 1;\n  }\n\n  .shopify-product-info h3 {\n    margin: 0;\n    font-size: 18px;\n    font-weight: 600;\n    color: #1a1a1a;\n    line-height: 1.4;\n    min-height: 50px;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n  }\n\n  .shopify-product-price {\n    font-size: 24px;\n    font-weight: 700;\n    color: #d32f2f;\n  }\n\n  .shopify-product-description {\n    font-size: 13px;\n    color: #666;\n    line-height: 1.5;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n    flex-grow: 1;\n  }\n\n  .shopify-cta-button {\n    display: inline-block;\n    background: #000;\n    color: white;\n    padding: 12px 20px;\n    text-decoration: none;\n    border-radius: 4px;\n    font-weight: 600;\n    text-align: center;\n    border: none;\n    cursor: pointer;\n    transition: background 0.3s ease;\n    font-size: 14px;\n    margin-top: auto;\n    width: 100%;\n    box-sizing: border-box;\n  }\n\n  .shopify-cta-button:hover {\n    background: #333;\n  }\n\n  .shopify-cta-button:active {\n    transform: scale(0.98);\n  }\n\n  .shopify-loading {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    min-height: 300px;\n    font-size: 18px;\n    color: #666;\n  }\n\n  .shopify-spinner {\n    border: 4px solid #f3f3f3;\n    border-top: 4px solid #000;\n    border-radius: 50%;\n    width: 40px;\n    height: 40px;\n    animation: spin 1s linear infinite;\n    margin-right: 15px;\n  }\n\n  @keyframes spin {\n    0% { transform: rotate(0deg); }\n    100% { transform: rotate(360deg); }\n  }\n\n  .shopify-error {\n    background: #fff3cd;\n    border: 1px solid #ffc107;\n    color: #856404;\n    padding: 15px;\n    border-radius: 4px;\n    margin: 20px;\n    text-align: center;\n  }\n\n  .shopify-badge {\n    display: inline-block;\n    background: #f0f0f0;\n    padding: 4px 8px;\n    border-radius: 3px;\n    font-size: 11px;\n    color: #666;\n    margin-top: 8px;\n  }\n\n  @media (max-width: 768px) {\n    .shopify-products-title {\n      font-size: 24px;\n      margin-bottom: 20px;\n    }\n\n    .shopify-products-grid {\n      grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n      gap: 15px;\n      padding: 0 10px;\n    }\n\n    .shopify-product-image-container {\n      height: 200px;\n    }\n  }\n\n  @media (max-width: 480px) {\n    .shopify-products-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n<\/style>\n\n<div class=\"shopify-products-wrapper\">\n  <h2 class=\"shopify-products-title\">Nossos Produtos<\/h2>\n  <div class=\"shopify-products-grid\" id=\"shopifyProductsContainer\">\n    <div class=\"shopify-loading\">\n      <div class=\"shopify-spinner\"><\/div>\n      Carregando produtos...\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  \/\/ ========================================\n  \/\/ CONFIGURA\u00c7\u00c3O DE PRODUTOS\n  \/\/ ========================================\n  \/\/ ADICIONE\/REMOVA PRODUTOS AQUI\n  \n  const SHOPIFY_PRODUCTS = [\n    {\n      store: 'u9cy9g-50.myshopify.com',\n      handle: 'bugatti-nashville-carry-on-luggage-hlg3920bu',\n      title: 'Bugatti Nashville Carry-On Luggage',\n      image: 'https:\/\/via.placeholder.com\/400x300?text=Bugatti+Nashville'\n    },\n    \/\/ ADICIONE MAIS PRODUTOS AQUI\n    \/\/ {\n    \/\/   store: 'u9cy9g-50.myshopify.com',\n    \/\/   handle: 'seu-produto-2',\n    \/\/   title: 'Seu Produto 2',\n    \/\/   image: 'https:\/\/via.placeholder.com\/400x300?text=Produto+2'\n    \/\/ },\n    \/\/ {\n    \/\/   store: 'u9cy9g-50.myshopify.com',\n    \/\/   handle: 'seu-produto-3',\n    \/\/   title: 'Seu Produto 3',\n    \/\/   image: 'https:\/\/via.placeholder.com\/400x300?text=Produto+3'\n    \/\/ }\n  ];\n\n  \/\/ ========================================\n  \/\/ FUN\u00c7\u00d5ES DE CARREGAMENTO\n  \/\/ ========================================\n\n  function formatPrice(cents) {\n    return new Intl.NumberFormat('pt-BR', {\n      style: 'currency',\n      currency: 'BRL'\n    }).format(cents \/ 100);\n  }\n\n  function escapeHtml(text) {\n    if (!text) return '';\n    const map = {\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      \"'\": '&#039;'\n    };\n    return text.replace(\/[&<>\"']\/g, m => map[m]);\n  }\n\n  async function fetchProduct(productConfig) {\n    try {\n      const apiUrl = `https:\/\/${productConfig.store}\/products\/${productConfig.handle}.json`;\n      const response = await fetch(apiUrl);\n      \n      if (!response.ok) throw new Error('Produto n\u00e3o encontrado');\n      \n      const data = await response.json();\n      const product = data.product;\n\n      return {\n        success: true,\n        title: product.title,\n        price: product.variants[0]?.price ? formatPrice(product.variants[0].price) : 'Consultar',\n        image: product.featured_image?.src || productConfig.image,\n        description: product.body_html?.replace(\/<[^>]*>\/g, '').substring(0, 100) || '',\n        url: `https:\/\/${productConfig.store}\/products\/${productConfig.handle}`\n      };\n    } catch (error) {\n      console.warn(`Erro ao carregar ${productConfig.handle}:`, error);\n      \n      return {\n        success: false,\n        title: productConfig.title,\n        price: 'Consultar',\n        image: productConfig.image,\n        description: 'Clique para ver detalhes do produto',\n        url: `https:\/\/${productConfig.store}\/products\/${productConfig.handle}`\n      };\n    }\n  }\n\n  function createProductCard(product) {\n    return `\n      <div class=\"shopify-product-card\">\n        <div class=\"shopify-product-image-container\">\n          <img decoding=\"async\" src=\"${escapeHtml(product.image)}\" alt=\"${escapeHtml(product.title)}\" class=\"shopify-product-image\" loading=\"lazy\">\n        <\/div>\n        <div class=\"shopify-product-info\">\n          <h3>${escapeHtml(product.title)}<\/h3>\n          <div class=\"shopify-product-price\">${escapeHtml(product.price)}<\/div>\n          <p class=\"shopify-product-description\">${escapeHtml(product.description)}<\/p>\n          <a href=\"${product.url}\" class=\"shopify-cta-button\" target=\"_blank\" rel=\"noopener noreferrer\">\n            Ver Detalhes\n          <\/a>\n          <div class=\"shopify-badge\">\ud83d\udd12 Compra segura<\/div>\n        <\/div>\n      <\/div>\n    `;\n  }\n\n  async function loadAllProducts() {\n    const container = document.getElementById('shopifyProductsContainer');\n    \n    try {\n      if (SHOPIFY_PRODUCTS.length === 0) {\n        container.innerHTML = '<div class=\"shopify-error\">Nenhum produto configurado. Adicione produtos no c\u00f3digo.<\/div>';\n        return;\n      }\n\n      \/\/ Carrega todos os produtos em paralelo\n      const productsPromises = SHOPIFY_PRODUCTS.map(config => fetchProduct(config));\n      const products = await Promise.all(productsPromises);\n\n      \/\/ Renderiza os cards\n      const html = products.map(product => createProductCard(product)).join('');\n      container.innerHTML = html;\n\n    } catch (error) {\n      console.error('Erro ao carregar produtos:', error);\n      container.innerHTML = '<div class=\"shopify-error\">Erro ao carregar produtos. Tente novamente mais tarde.<\/div>';\n    }\n  }\n\n  \/\/ Carrega produtos quando o DOM estiver pronto\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', loadAllProducts);\n  } else {\n    loadAllProducts();\n  }\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Nossos Produtos Carregando produtos&#8230;<\/p>","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","footnotes":""},"class_list":["post-1229","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/pages\/1229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/comments?post=1229"}],"version-history":[{"count":13,"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/pages\/1229\/revisions"}],"predecessor-version":[{"id":1246,"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/pages\/1229\/revisions\/1246"}],"wp:attachment":[{"href":"https:\/\/experiencetourcanada.com\/es\/wp-json\/wp\/v2\/media?parent=1229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}