Certos segmentos precisam restringir determinados conteúdos do site ou loja virtual, é o caso de artigos com imagens explícitas de sexo ou violência e no caso de lojas, produtos eróticos.
No WordPress, existem alguns plugins gratuitos e comerciais que podem exibir uma mensagem de alerta e confirmação antes de acessar o conteúdo restrito.
A solução descrita abaixo foi realizada em um tema que não tinha integração ao Woocommerce, desde que a integração utilize o arquivo woocommerce.php, a réplica do arquivo page.php mas com o conteúdo do Woocommerce. Caso precise saber como isso funciona, clique aqui para ver a documentação (em inglês).
Woocommerce
No Woocommerce, esses plugins funcionam muito bem para restringir a loja inteira mas não encontrei nenhuma solução para a necessidade de restringir uma determinada categoria de produtos, ou seja, a loja só deve exibir o alerta se o visitante acessar a categoria ou um produto restrito.
Um detalhe importante, quando se falar em restringir a exibição de produtos para visitantes, não queremos que o mesmo ocorra quando o Google ou outros bots estiverem indexando a loja, as páginas dos produtos restritos deverão aparecer normalmente nos resultados da busca e a mensagem ou confirmação de idade deverá aparecer somente quando o visitante clicar no link para acessar o produto.
A solução neste caso foi utilizar um plugin para o WordPress e adaptá-lo para funcionar com categorias específicas e para isso foi utilizado o plugin comercial “Adults Only”.
Link para o site do plugin: Aduls Only
Na tela de configuração do plugin, conforme a imagem, o plugin não está habilitado para funcionar no site inteiro mas podem ser personalizadas outras opções como idade mínima, aparência da mensagem, validade do cookie, etc.
Quando a categoria é acessada e o visitante seleciona se tem menos ou mais de 18 anos, o cookie wp_aoavsv é o responsável por armazenar essa informação, conforme o destaque na imagem acima, o nome desse cookie pode ser modificado.
A duração padrão do cookie é de 2 semanas mas acredito que é muito tempo para uma loja virtual e no exemplo foram utilizadas 24 horas.
Para fazer a verificação da categoria e ativação da função do plugin, é só inserir o código abaixo no início do woocommerce.php do tema:
[pastacode lang=”php” message=”woocommerce.php” highlight=”” provider=”manual” manual=”%3C%3Fphp%0Aif%20(%20is_product_category(‘nome-da-categoria’)%20)%20%7B%0A%09if%20(%20isset(%24_GET%5B’ao_disagree’%5D)%20)%20%7B%0A%09%09%09adults_only_redirect(%20%24url%20%3D%20’http%3A%2F%2Flink-para-redirecionar%2F’%20)%3B%0A%09%7D%0A%09if%20(%20!isset(%24_COOKIE%5B’wp_aoavsv’%5D)%20)%20%7B%0A%09%09adults_only()%3B%0A%09if(%20!isset(%24_GET%5B’ao_confirm’%5D)%20)%20%7B%0A%09%09adults_only_theme_check()%3B%0A%09%7D%20%0A%09%7D%20%0A%7D%0A%3F%3E”/]
Caso a categoria restrita seja acessada e o visitante clique na opção “Tenho menos de 18 anos”, será redirecionado para a url definida, por exemplo, a página inicial da loja. Nessa situação, se acessar novamente a categoria restrita, a mensagem será exibida novamente.
Se o visitante clicar em “Tenho mais de 18 anos” vai ter acesso a categoria ou página do produto restrito e se fizer um novo acesso ao conteúdo restrito da loja dentro do período de 24 horas, a mensagem de restrição não será exibida.
Abaixo a imagem de uma mensagem de restrição de idade:
Um detalhe importante é remover esses produtos da página definida como padrão da loja no woocommerce.
Para isso, insira o gancho abaixo no functions.php do tema:
[pastacode lang=”php” message=”functions.php” highlight=”” provider=”manual” manual=”add_action(%20’pre_get_posts’%2C%20’custom_pre_get_posts_query’%20)%3B%0A%20%0Afunction%20custom_pre_get_posts_query(%20%24q%20)%20%7B%0A%20%0A%09if%20(%20!%20%24q-%3Eis_main_query()%20)%20return%3B%0A%09if%20(%20!%20%24q-%3Eis_post_type_archive()%20)%20return%3B%0A%09%0A%09if%20(%20!%20is_admin()%20%26%26%20is_shop()%20)%20%7B%0A%20%0A%09%09%24q-%3Eset(%20’tax_query’%2C%20array(array(%0A%09%09%09’taxonomy’%20%3D%3E%20’product_cat’%2C%0A%09%09%09’field’%20%3D%3E%20’slug’%2C%0A%09%09%09’terms’%20%3D%3E%20array(%20’nome-da-categoria’%20)%2C%0A%09%09%09’operator’%20%3D%3E%20’NOT%20IN’%0A%09%09)))%3B%0A%09%0A%09%7D%0A%20%0A%09remove_action(%20’pre_get_posts’%2C%20’custom_pre_get_posts_query’%20)%3B%0A%20%0A%7D%0A”/]
Ola
Pode mim ajudar a fazer isso no tema StorefrontVersão: 2.1.8
Não consegue !
Gostei.