Easy Digital Downloads possui um sistema de carrinho de compras nativo que permite aos visitantes da loja adicionar vários itens aos seus carrinhos antes de finalizar a compra. No entanto, existem várias configurações de host, site e navegador que podem quebrar essa funcionalidade e fazer com que o carrinho pareça vazio no checkout.
Em raras ocasiões, devido a uma configuração do servidor, configurações de hospedagem ou conflito com outros plugins, você pode experimentar seu carrinho de compras vazio após adicionar um item ao seu carrinho. Neste artigo, explicaremos algumas das razões pelas quais isso pode acontecer e o que você pode fazer para resolver o problema.
Plugins de Cache
Plugins de cache são um culpado muito comum porque são amplamente utilizados. Seu propósito é simples – plugins de cache aceleram os tempos de carregamento do seu site armazenando certos dados do site para fácil acesso quando solicitados pelo navegador. Embora esta seja uma ótima maneira de tornar seu site rápido e reduzir o tráfego do servidor, algumas pequenas alterações podem ser necessárias para que seu carrinho de compras funcione corretamente.
Desativar o cache na sua Página de Checkout
Como as informações na sua página de checkout são específicas para um único visitante, elas nunca devem ser armazenadas em cache, pois isso pode produzir resultados indesejados para seus clientes. Adicionar itens ao carrinho, removê-los, calcular totais do carrinho e todas as outras funções da página de checkout precisam refletir o estado real dos dados da página toda vez que ela é carregada. Não desativar o cache na sua página de checkout pode resultar em vários problemas, incluindo clientes que não conseguem comprar ou que seus pedidos contenham totais, impostos ou produtos incorretos.
Se você estiver usando um plugin como W3 Total Cache, WP Super Cache ou outro plugin semelhante, você deve configurá-lo para evitar o cache na página de checkout.
Se você estiver usando Varnish como uma camada de cache, talvez queira pular para a nossa seção sobre o uso de Varnish com Easy Digital Downloads.
Cloudflare
Cloudflare é um serviço muito poderoso para melhorar o desempenho da sua loja e proteger seu negócio, e nós o usamos neste próprio site em que você está agora. Para configurar o Cloudflare para funcionar com sua loja alimentada por Easy Digital Downloads, você só precisa fazer algumas modificações mínimas.
Regras de Página

Crie as seguintes Regras de Página dentro das suas configurações do Cloudflare. As Regras de Página podem ser adicionadas clicando em Regras → Regras de Página → Criar Regra de Página.
Primeiro, no Painel do seu Site Cloudflare, encontre o menu 'Regras' à esquerda, expanda-o e clique em 'Regras de Página'.
É aqui que você pode gerenciar suas diferentes regras de página e organizá-las em ordem de precedência. É melhor manter sua regra de página de checkout no topo desta lista, para que seja a primeira a ser processada e nenhuma outra regra afete seu checkout.
Para criar uma Regra de Página, clique no botão 'Criar Regra de Página'

Ao criar uma Regra de Página, você precisa definir a quais URLs essa regra se aplica e quais regras você deseja que o Cloudflare aplique. Para as páginas de Checkout, queremos sempre ignorar a camada de cache do Cloudflare, então usaremos a configuração 'Nível de Cache' e a definiremos como 'Ignorar'. Isso significa que o Cloudflare enviará qualquer solicitação para a página de Checkout diretamente para o seu servidor.

Ao adicionar esta Regra de Página, certifique-se de que a URL termine com a barra final e o caractere *. Isso garantirá que ela corresponda a quaisquer parâmetros de string de consulta, como códigos de desconto, e outros recursos do checkout do EDD não serão impactados.
Cache do Host da Web
Embora menos comum, o cache do lado do servidor pode ser um problema tão grande quanto para o seu sistema de carrinho de compras. Muitos provedores de hospedagem oferecem serviços de cache nos quais você opta e configura sozinho. Outros, como a
WP Engine, praticam um cache agressivo que é pré-configurado para você. Embora essas ferramentas possam ajudar sua loja a ter um melhor desempenho e converter mais usuários, podemos precisar fazer alguns ajustes para um equilíbrio entre desempenho e confiabilidade.
WP Engine
Se você hospeda seu site na WP Engine, poderá encontrar alguns problemas com carrinhos vazios ao visitar a página de checkout. Isso se deve ao cache agressivo de páginas (o que é bom!), mas pode ser facilmente resolvido solicitando à WP Engine que configure uma exceção especial de cache para sua página de checkout.
Para fazer isso, basta enviar um ticket de suporte para a WP Engine através do portal de suporte deles e pedir para eles excluírem sua página de checkout do cache.
Sua página de checkout é aquela que tem o shortcode [download_checkout] e é salva em Downloads > Configurações:

Para facilitar as coisas para você, sinta-se à vontade para copiar e colar este ticket de exemplo:
Olá!
Meu site usa o plugin de e-commerce Easy Digital Downloads e estamos tendo alguns problemas com o cache de páginas e a página de checkout. A equipe do Easy Digital Downloads nos instruiu a pedir que vocês coloquem uma exceção de cache em nossa página de checkout.
Você poderia, por favor, adicionar a seguinte URL à lista de exceções?
https://YOURSITE.com/{put your checkout page URL here}
Obrigado!
Observação: Embora a página de checkout não possa mais ser cacheada, você ainda pode ter um problema com o link "Remover" em seu carrinho que não remove os itens corretamente. Se isso ocorrer, peça à WP Engine para "excluir os cookies 'edd_saved_cart' e 'edd_items_in_cart' do cache" e isso deve corrigir o link.
EasyEngine/Nginx
Se você estiver hospedando seu site com EasyEngine/Nginx e estiver usando cache Redis, você terá que encontrar e editar seu arquivo redis.conf (ou redis-php7.conf) e adicionar edd_items_in_cart|. Então, por exemplo, suas exceções poderiam parecer algo assim:
# Don't use the cache for logged in users or recent commenter
if ($http_cookie ~* "edd_items_in_cart|comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; }
Varnish
Se você estiver enfrentando carrinhos de compras vazios ao usar um servidor de cache Varnish com sua loja Easy Digital Downloads, você pode tentar usar as seguintes regras para ajudar a prevenir isso:
Em sua Configuração Varnish
// Tells Varnish to pass through on the checkout page
if (req.url ~ "checkout") { return (pass); }
// Tells Varnish to pass through on any request with edd_action in the query string
if (req.url ~ "edd_action") { return (pass); }
// Tells Varnish to pass through on any request with add_to_cart in the query string
if (req.url ~ "add_to_cart") { return (pass); }
// Tells Varnish to pass through if any cookies with `edd` are found
if (req.http.cookie ~ "(^|;s*)edd") { return (pass); }
Alguns tutoriais e configurações do Varnish sugerem reordenar os argumentos da query string para otimizar as taxas de acerto do cache. Esse recurso do Varnish pode fazer com que os links de download de arquivos gerados pelo Easy Digital Downloads falhem, devido à verificação de link seguro que ele utiliza. Se você deseja usar essa técnica de cache, escrevemos um guia útil sobre como suportar a modificação da query string com Easy Digital Downloads, e ainda assim dar aos clientes acesso a downloads de arquivos seguros.
Servidor não suporta Sessões PHP
As sessões PHP são projetadas para oferecer aos visitantes do seu site uma experiência mais personalizada. A capacidade de adicionar itens a um carrinho de compras de uma página para outra, e depois ver todos os itens da loja no carrinho no checkout, é o mais pessoal possível para um visitante novato que ainda não compartilhou nenhuma informação com seu site.
Alguns servidores ou hospedagens não suportam o uso do manipulador de sessão nativo do PHP. O Easy Digital Downloads armazena as informações do carrinho do seu visitante em sua sessão PHP, no entanto, quando esse recurso do PHP não está disponível, ele pode produzir carrinhos vazios, pois os dados do carrinho não podem ser salvos entre as visualizações de página.
O Easy Digital Downloads suporta o armazenamento de dados de sessão no banco de dados e o uso de cookies para ajudar a mitigar esse problema. Usar essa versão de gerenciamento de 'sessão' não é tão rápido quanto usar sessões PHP, pois depende do banco de dados, no entanto, pode resolver o problema do carrinho vazio.
Para habilitar Sessões de Banco de Dados, vá para Downloads > Configurações > Misc > Geral e defina o Gerenciamento de Sessão para Sessões de Banco de Dados.
Para tentar manter o desempenho ideal do seu banco de dados, o Easy Digital Downloads limpa as sessões abandonadas duas vezes por dia, usando os eventos WP Cron do WordPress.
Arquivo admin-ajax.php Bloqueado
Incluído no núcleo do WordPress está um arquivo chamado admin-ajax.php que é usado extensivamente em todo o WordPress, incluindo o Easy Digital Downloads. Bloquear o acesso a este arquivo pode causar problemas com o comportamento do seu carrinho e outros aspectos do seu site WordPress. Nunca é sugerido bloquear o acesso a este arquivo.
Se você estiver usando algum plugin de segurança ou tiver configurações de segurança agressivas em seu servidor, desative-os temporariamente e verifique a funcionalidade do carrinho novamente. Se suas configurações de segurança bloquearem este arquivo, seu carrinho não funcionará corretamente.
Para mais informações sobre admin-ajax.php bloqueado, consulte a documentação completa.
/wp-admin/ Bloqueado
Existem plugins que bloqueiam o acesso a /wp-admin/ para fins de segurança, e estes às vezes também bloqueiam o acesso ao arquivo admin-ajax.php mencionado anteriormente, causando os problemas listados acima.
Para testar se este é o problema, desative temporariamente os plugins de bloqueio de admin. Se o problema for resolvido, então você saberá que foi esse plugin.
Cookies do Navegador Desativados
O EDD usa cookies para armazenar informações com sessões e contar os itens em seu carrinho. Se os cookies do seu navegador estiverem desativados, o sistema de carrinho de compras pode não funcionar como esperado.
Configurações de URL
Conforme mencionado anteriormente, o Easy Digital Downloads usa Sessões e Cookies para poder salvar os dados do carrinho de um visitante entre as visitas às páginas, para que eles possam ter uma experiência única em sua loja. Cookies são pedaços de informação sobre o usuário que são armazenados em seu navegador. Por razões de segurança, os cookies que o Easy Digital Downloads usa definem o URL da loja em sua criação. É importante que seu site WordPress esteja configurado para manter o mesmo URL entre a página onde você adiciona um item ao seu carrinho e sua página de checkout.
Isso inclui a porção http ou https do URL. Se você tentar adicionar um produto ao carrinho em uma página que está usando http e sua página de checkout estiver protegida com um SSL, exibindo com https, seu carrinho ficará vazio, pois a página de checkout segura não tem acesso ao cookie adicionado pela página não segura que você usou anteriormente para adicionar o item ao carrinho.
Sugerimos que toda a sua loja seja carregada de forma segura com https no URL, incluindo as configurações de URL do seu WordPress. Se o seu host não fornecer um certificado SSL para sua loja, você pode obter um e pedir ao seu host para instalá-lo. Certifique-se de que seu host possa configurar seu site para carregar apenas via https, mas se não puderem, você sempre pode usar o Really Simple SSL para forçar o WordPress a carregar seu site com a versão protegida por SSL todas as vezes.
Certifique-se de que o que quer que você tenha definido em Configurações → Geral seja usado em todos os links do seu site.

Em alguns casos, vimos que um plugin ou script de terceiros instalado modifica o Endereço do Site ou o endereço do WordPress automaticamente após um certo tempo. Verifique novamente se o seu Endereço do Site não está sendo modificado para manter sua loja funcionando como esperado.
Regras do .htaccess
O arquivo .htaccess é usado pelo servidor para rotear corretamente as solicitações do usuário para suas páginas. O WordPress tem um conjunto de regras padrão nas quais confiamos para que o carrinho funcione corretamente. Se você estiver tendo problemas com seu carrinho vazio, tente usar a configuração padrão de .htaccess definida pelo WordPress.
Conflitos Conhecidos de Plugins
Embora raro, pode haver alguns conflitos entre o carrinho de compras do Easy Digital Downloads e outros plugins do WordPress. Embora tentemos contornar esses conflitos com nosso código, às vezes não conseguimos e, como tal, mantemos uma lista de plugins que não podemos garantir que funcionarão bem com o Easy Digital Downloads. Se você encontrar um conflito de plugin conhecido, entre em contato com nosso suporte com o máximo de informações detalhadas que puder sobre o conflito e teremos prazer em analisar o problema para você.
