Manual Técnico Plugin Admin Pedidos Evidive

Estrutura técnica do Plugin Admin Pedidos Evidive

Como abrir um Ticket de Suporte?

Tem alguma dúvida, ou precisa abrir um Ticket de Suporte? Clique aqui para abrir uma conta ou fazer login. Nosso prazo de atendimento para os chamados técnicos são de até 24 horas úteis. Não sabe como abrir um chamado? Aqui tem um vídeo mostrando como fazer isso.

 

1 - 01. Introdução

Essa documentação demonstra como foi desenvolvido o plugin Admin Pedidos do site WordPress Evidive.

O plugin tem integração e depêndencia com o plugin WooCommerce, e com o plugin Advanced Custom Fields e a extensão Advanced Custom Fields Repeater Fields, os dois últimos, responsáveis por criar e salvar os campos necessários para salvar a data e hora dos agendamentos disponíveis. Por causa disso, se atentar sempre sobre a estrutura dos produtos (CPT products) e seus respectivos campos personalizados para a ligação entre datas e número de vagas disponíveis (ambos administraveis via painel admin do WordPress pelo cliente).

O plugin Admin Pedido Evidive foi construído sem nenhum framework especifico, apenas com as diretivas e boas práticas para desenvolvimento de plugins para WordPress, logo, com qualquer conhecimento de PHP e WordPress, você conseguira identificar e alterar qualquer funcionalidade ou recurso do mesmo.

Nos tópicos abaixo vamos analisar cada uma das sessões que compõem o plugin.

 

 

2 - 02. Estrutura básica

O arquivo plugin-evidive.php contém todos os registers e chamadas que compõem o plugin, porém, o plugin abrange apenas as funcionalidades do Admin Pedidos, todas as funcionalidades da integração do ACF e do WooCommerce, estão no tema principal ativo.

Todas as páginas inseridas no painel administrativo do WordPress, estão sendo gerenciadas pelo Rational Option Pages, desenvolvido por Jeremy Hixon, e mais informações podem ser consultadas nessa URL.

Todos os templates usados pela classe acima, estão no diretório templates na pasta raiz do plugin.

No arquivo plugin-evidive.php também estão declaradas todas as chamadas Ajax do plugin, que basicamente atualizam apenas as post_metas dos pedidos, o que exige total conhecimento e domínio sobre como o WooCommerce salva e manipula informações do CPT "shop_order".

 

3 - 03. Template admin-pedidos.php

Como vimos na última sessão, a pasta templates armazena todos os templates usados pelo plugin. O principal deles é o admin-pedidos.php onde estão todas as principais funções exibidas no front-end do plugin, bem como chamadas JavaScript etc.

Dentro desse template temos a função "get_orders_ids_by_product_id_evidive2" responsável por realizar um SELECT especifico de CPTs "shop_orders" em um formato mais conveniente do que realizar uma chamada WP_QUERY com os mesmos parâmetros:

A função acima retorna um array com os IDs dos pedidos, e então, o plugin manipula cada posição para obter os dados do cliente, e as informações sobre vagas, horários e participantes.

 

4 - 04. Controllers JavaScript

No diretório raiz do plugin js/scripts-evidive.js estão todos os controllers JavaScript do Front-end do template tempaltes/admin-pedidos.php. Basicamentes todas as funcões para filtros, micro interações e chamadas Ajax.

As funções foram escritas usando ECMA6 e JQuery.

 

5 - 05. Desafios

Para a edição de um pedido previamente criado (seja pelo fluxo normal do checkout WooCommerce, seja pelo plugin Admin Pedidos), existe o desafio de como controlar o número de vagas, por exemplo, se um determinado dia e hora tiver apenas 4 vagas, logo, o usuário utilizando o plugin, não deveria conseguir alocar 8 pessoas nesse mesmo dia e hora.

Por causa disso, a solução criada foi impedir a transferência de reservas, onde para algo do tipo, primeiro se deve criar um novo pedido e na sequência apagar o pedido que foi cancelado (transferido). Idealmente a transferência direta precisaria ter controles para avalair se a quantidade de vagas é suficiênte, se não for, impediar a ação e avisar o usuário,  e se for, realizar a tranferência (incluindo a liberação das vagas da data anterior).

Inclusive, sempre que um pedido é cancelado, automaticamente as vagas são liberadas novamente, por exemplo, se um pedido que ocupavada 4 vagas de uma data foi cancelado (status cancelado do WooCommerce), essas 4 vagas ficam novamente disponíveis para reserva.

Essas funções que restauram vagas, não são gerenciadas pelo plugin, e sim, diretamente pelo tema Evidive.

 

6 - 06. Comentários sobre o tema

Como vimos, algumas funções importantes de todos o fluxo são gerenciadas pelo tema principal da Evidive. Nesse tópico vamos analisar alguns pontos chaves:

Quando um pedido é cancelado, existe um gatilho que restaura as vagas de acordo com o número que estava no pedido:

Toda a estrutura de "single product", carrinho e checkout do site da Evidive, foi totalmente personalizada estando presente nos arquivos:

  • footer-woocommerce.php
  • header-woocommerce.php
  • pages-woocommerce.php
  • woo-single-produto-normal.php
  • woo-single-produto-voucher.php
  • woo-single-produto.php
  • woocommerce.php

Ambos na raiz do tema. Os assets estão no diretório checkout na raiz do tema.

 

7 - 07. Comentários sobre o tema: calendário

Caso precise alterar o calendário renderizado na página do "single" produto, estamos utilizando uma versão customizada do https://codecanyon.net/item/dzs-jquery-mini-events-calendar/3372045, porém, note que é uma versão 100% customizada e alterada do plugin.

O Css do plugin JS foi amplamente comentado para facilitar a edição do estilo, principalmente nas sessões diferentes do plugin original, exemplo do arquivo presente em checkout/css/dzscalendar.css:

 

 

8 - 08. Considerações finais

Caso seja necessário acessar o front-end original do plugin, você pode acessar essa URL.

Qualquer dúvida ou sugestão devem ser enviadas diretamente para contato@mangu.com.br.

 

Como abrir um Ticket de Suporte?

Tem alguma dúvida, ou precisa abrir um Ticket de Suporte? Clique aqui para abrir uma conta ou fazer login. Nosso prazo de atendimento para os chamados técnicos são de até 24 horas úteis. Não sabe como abrir um chamado? Aqui tem um vídeo mostrando como fazer isso.

 


Getting Started
Product Features
Customization
Help