Pedevem Core
Plugin do marketplace VemComer (WordPress)
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/staryannfree/vemcomer-core/archive/refs/heads/main.zip🚨 TRIGGER AUTOMÁTICO: AAA
IMPORTANTE: Se você digitar "AAA" em qualquer mensagem, o assistente será OBRIGADO a analisar todos os logs antes de responder.
AAA = "Analisa Automaticamente Agora"
Veja: AAA-PROTOCOLO-OBRIGATORIO.md para detalhes completos.
Core de marketplace para WordPress com:
- CPTs: Produtos, Pedidos, Restaurantes, Itens do Cardápio.
- Admin Menu, REST API, Status de Pedido, Webhooks e Seed via WP‑CLI.
- Integrações: WooCommerce (sincroniza pedidos/status) e Automator (hooks customizados).
Instalação e Ativação
- Copie o plugin para
wp-content/plugins/vemcomer-core/. - Ative Pedevem Core no painel do WordPress.
- (Opcional) Configure Pedevem ▸ Configurações → Segredo do Webhook e integrações.
Páginas públicas (shortcodes)
Ao ativar o plugin o núcleo cria/atualiza automaticamente as páginas que contêm apenas os shortcodes principais (lista, cardápio e checkout) e elas passam a aparecer em Páginas ▸ Todas como qualquer outra página. Se quiser recriá-las depois — ou gerar versões parametrizadas para um restaurante específico — use VemComer ▸ Instalador, que reaproveita as mesmas rotinas sem duplicar conteúdos existentes.
Shortcodes principais disponíveis:
[vemcomer_restaurants]— grade pública de restaurantes cadastrados.[vc_restaurants_map]— mapa público com pins e botão “Perto de mim”.[vemcomer_menu]— lista os itens de um restaurante (usa?restaurant_id=ou o atributorestaurant_id).[vemcomer_checkout]— checkout simplificado para o carrinho do marketplace.[vemcomer_restaurant_panel]— painel front-end para donos de restaurante (requer login). Inclui botão "Configuração Rápida" para onboarding de novos usuários.[vemcomer_restaurant_signup]— formulário público para restaurantes enviarem seus dados (entradas ficam pendentes para aprovação do admin).[vemcomer_customer_signup]— formulário de criação de conta para clientes finais.
Página de validação de acesso: /validar-acesso/?token={access_url} — página automática onde restaurantes aprovados podem criar sua conta de acesso usando o token recebido no webhook.
Sistema de Onboarding: O painel do restaurante inclui um sistema de onboarding guiado que ajuda novos donos a configurar seus restaurantes. Acessível via botão "⚡ Configuração Rápida" no painel. Veja mais detalhes em docs/ONBOARDING.md.
Todos os shortcodes acima renderizam HTML, CSS e JavaScript próprios do plugin — não há dependência de construtores como o Elementor para exibir as páginas públicas.
Sistema de Onboarding
O sistema de onboarding guia novos donos de restaurantes através dos primeiros passos de configuração:
Como funciona
- Acesso: Quando um dono de restaurante acessa o painel pela primeira vez, vê o botão "⚡ Configuração Rápida"
- Ativação: Ao clicar no botão, um modal interativo é aberto com 5 steps guiados
- Progresso: O progresso é salvo automaticamente e pode ser retomado a qualquer momento
- Verificação: Alguns steps são verificados automaticamente (perfil completo, itens no cardápio, etc.)
- Conclusão: Ao completar todos os steps, o botão desaparece e o onboarding não aparece mais
Steps do Onboarding
- Bem-vindo ao Pedevem! - Tela inicial de boas-vindas
- Complete seu perfil - Adicionar WhatsApp, endereço e horários
- Adicione itens ao cardápio - Criar pelo menos 3 itens
- Configure delivery - Definir se oferece delivery
- Veja sua página pública - Visualizar como os clientes veem o restaurante
Recursos
- ✅ Progresso persistente - Salvo no banco de dados
- ✅ Verificação automática - Detecta quando tarefas são completadas
- ✅ Dismissível - Pode ser fechado e retomado depois
- ✅ Responsivo - Funciona em desktop e mobile
- ✅ Acessível - Segue boas práticas de acessibilidade
Para mais detalhes, consulte docs/ONBOARDING.md e docs/ONBOARDING_VISUAL.md.
Seed (dados de demonstração)
Cria 1 restaurante e 5 itens de cardápio:
wp vc seed
Integração Frontend PWA
O plugin está configurado para comunicação com frontends PWA (Progressive Web Apps) desenvolvidos em React, Vue ou outras frameworks modernas.
Repositório: https://github.com/Staryannfree/vemcomer-core
Configuração CORS
O plugin inclui um handler CORS configurável que permite requisições cross-origin do frontend. As origens permitidas podem ser configuradas via filtro WordPress:
add_filter( 'vemcomer_rest_allowed_origins', function( $origins ) {
$origins[] = 'https://seu-frontend.com';
return $origins;
} );
Por padrão, as seguintes origens são permitidas:
http://localhost:3000http://localhost:5173http://localhost:8080http://127.0.0.1:3000http://127.0.0.1:5173http://pedevem-local.local(ambiente local)https://hungry-hub-core.lovable.app(frontend Lovable produção)https://47191717-b1f5-4559-bdab-f069bc62cec6.lovableproject.com(frontend Lovable desenvolvimento)https://periodic-symbol.localsite.io(Live Link Local by Flywheel)
Documentação da API
A documentação completa da API REST está disponível em:
- Documentação Completa dos Endpoints - Lista todos os endpoints públicos com exemplos de requisição e resposta
- Guia de Integração para Lovable - Guia passo a passo para integrar o frontend PWA, incluindo:
Links no GitHub:
- API_ENDPOINTS.md
- LOVABLE_INTEGRATION.md
- Configuração de variáveis de ambiente
- Cliente API (fetch wrapper) pronto para uso
- Estrutura de dados TypeScript
- Tratamento de erros
- Exemplos de uso completos
Exemplo Rápido
// Configuração básica
// Para desenvolvimento local: http://pedevem-local.local/wp-json/vemcomer/v1
// Para produção: https://pedevem.com/wp-json/vemcomer/v1
const API_URL = 'http://pedevem-local.local/wp-json/vemcomer/v1';
// Listar restaurantes
const restaurants = await fetch(`${API_URL}/restaurants?per_page=20`)
.then(res => res.json());
// Obter detalhes de um restaurante
const restaurant = await fetch(`${API_URL}/restaurants/123`)
.then(res => res.json());
// Obter cardápio
const menuItems = await fetch(`${API_URL}/restaurants/123/menu-items`)
.then(res => res.json());
Para mais detalhes e exemplos completos, consulte a documentação de integração.
Endpoints REST
Restaurantes
- GET
/wp-json/vemcomer/v1/restaurants- Lista restaurantes (suporta filtros:cuisine,delivery,is_open,search,orderby,order,per_page,page) - GET
/wp-json/vemcomer/v1/restaurants/{id}- Detalhes de um restaurante - GET
/wp-json/vemcomer/v1/restaurants/{id}/menu-items- Lista itens do cardápio de um restaurante - GET
/wp-json/vemcomer/v1/restaurants/{id}/menu-categories- Lista categorias do cardápio - GET
/wp-json/vemcomer/v1/restaurants/{id}/schedule- Horários estruturados do restaurante (inclui feriados) - GET
/wp-json/vemcomer/v1/restaurants/{id}/is-open?timestamp={opcional}- Verifica se restaurante está aberto (retorna próximo horário de abertura se fechado) - GET
/wp-json/vemcomer/v1/restaurants/{id}/reviews- Lista avaliações aprovadas de um restaurante - GET
/wp-json/vemcomer/v1/restaurants/{id}/rating- Retorna rating agregado (média e total)
Modificadores de Produtos
- GET
/wp-json/vemcomer/v1/menu-items/{id}/modifiers- Lista modificadores de um item do cardápio (público) - POST
/wp-json/vemcomer/v1/menu-items/{id}/modifiers- Criar modificador vinculado a um item (admin) - PATCH
/wp-json/vemcomer/v1/modifiers/{id}- Atualizar modificador (admin) - DELETE
/wp-json/vemcomer/v1/modifiers/{id}- Deletar modificador (admin)
Avaliações e Ratings
- GET
/wp-json/vemcomer/v1/restaurants/{id}/reviews?per_page={opcional}&page={opcional}- Lista avaliações aprovadas de um restaurante (público) - GET
/wp-json/vemcomer/v1/restaurants/{id}/rating- Retorna rating agregado (média e total) de um restaurante (público) - POST
/wp-json/vemcomer/v1/reviews- Criar avaliação (requer autenticação, body:restaurant_id,rating(1-5),comment(opcional),order_id(opcional))
Favoritos
- GET
/wp-json/vemcomer/v1/favorites/restaurants- Lista restaurantes favoritos do usuário autenticado - POST
/wp-json/vemcomer/v1/favorites/restaurants/{id}- Adicionar restaurante aos favoritos (requer autenticação) - DELETE
/wp-json/vemcomer/v1/favorites/restaurants/{id}- Remover restaurante dos favoritos (requer autenticação) - GET
/wp-json/vemcomer/v1/favorites/menu-items- Lista itens do cardápio favoritos do usuário autenticado - POST
/wp-json/vemcomer/v1/favorites/menu-items/{id}- Adicionar item do cardápio aos favoritos (requer autenticação) - DELETE
/wp-json/vemcomer/v1/favorites/menu-items/{id}- Remover item do cardápio dos favoritos (requer autenticação)
Pedidos
- GET
/wp-json/vemcomer/v1/orders?status={opcional}&data_inicio={opcional}&data_fim={opcional}&restaurant_id={opcional}&per_page={opcional}&page={opcional}- Lista pedidos do usuário autenticado com filtros - GET
/wp-json/vemcomer/v1/orders/{id}- Detalhes completos de um pedido (requer autenticação, apenas dono ou admin)
Analytics
- GET
/wp-json/vemcomer/v1/restaurants/{id}/analytics?period={today|week|month|custom}&date_from={opcional}&date_to={opcional}- Métricas de analytics do restaurante (requer autenticação, apenas dono ou admin)
- POST
/wp-json/vemcomer/v1/orders/prepare-whatsapp- Gera mensagem formatada para WhatsApp (body:restaurant_id,items,customer,fulfillment)
Pedidos
-
POST
/wp-json/vemcomer/v1/pedidos -
Body:
{ "restaurant_id": 123, "itens": [ {"produto_id": 123, "qtd": 2} ], "subtotal": "49,90", "fulfillment": { "method": "flat_rate_delivery", "ship_total": "9,90" } }
Fulfillment e Checkout
- O checkout público trabalha somente com um restaurante por vez e exige um método de fulfillment válido.
- Cada método implementa
VC\Checkout\FulfillmentMethod(inc/Checkout/FulfillmentMethod.php). - Registre seus métodos no action
vemcomer_register_fulfillment_method— o registro padrão (inc/Checkout/Methods/FlatRateDelivery.php) aplica o frete fixo + pedido mínimo dos metadados do restaurante. - Use os helpers JS em
assets/js/checkout.jspara testar rapidamente as rotas de frete/pedido (window.VemComerCheckoutExamples.exampleQuote()e.exampleOrder()).
Cotação de Frete
- GET
/wp-json/vemcomer/v1/shipping/quote?restaurant_id={id}&subtotal={valor}&lat={lat}&lng={lng}&address={endereco}&neighborhood={bairro} - Parâmetros obrigatórios:
restaurant_id,subtotal - Parâmetros opcionais:
lat,lng,address,neighborhood(para cálculo por distância) - Retorna: array de métodos disponíveis, distância calculada, se está no raio, se restaurante está aberto
Banners
- GET
/wp-json/vemcomer/v1/banners- Lista banners ativos da home (público) - Parâmetros opcionais:
restaurant_id- Filtrar banners de um restaurante específico
Exemplo de registro:
add_action( 'vemcomer_register_fulfillment_method', function () {
\VC\Checkout\FulfillmentRegistry::register( new My_Custom_Method(), 'my-method' );
} );
Webhook de Pagamento (entrada)
- POST
/wp-json/vemcomer/v1/webhook/payment - Header:
X-VemComer-Signature: sha256=<hmac_hex_do_corpo> - Body:
{ "order_id": 10, "status": "paid|refunded|failed", "amount": "99,90", "ts": 1690000000 }
Mercado Pago → VemComer
O plugin expõe um handler dedicado para notificações do Mercado Pago (/wp-json/vemcomer/v1/mercadopago/webhook).
- Execute
composer require mercadopago/dx-phpno diretório do plugin e garanta quevendor/autoload.phpesteja presente. - Em VemComer ▸ Configurações configure:
- Gateway de pagamento:
mercadopago. - Segredo do webhook (HMAC): gere pelo botão "Gerar novo segredo" e compartilhe com o serviço intermediário.
- Token do Mercado Pago: cole o
access_tokendo APP (APP_USR-...).
- Gateway de pagamento:
- No checkout do Mercado Pago informe
external_reference = <ID do vc_pedido>(oumetadata.vemcomer_order_id). - Cadastre a URL
/wp-json/vemcomer/v1/mercadopago/webhooknas notificações do Mercado Pago.
O handler valida o id recebido junto ao SDK oficial, resolve o pedido e encaminha o payload assinado para /wp-json/vemcomer/v1/webhook/payment. Após o processamento você pode ouvir vemcomer_mercadopago_payment_processed para executar automações adicionais (envio de comprovantes, atualização de painel, etc.).
Status de Pedido
Os pedidos (vc_pedido) podem ter:
vc-pending, vc-paid, vc-preparing, vc-delivering, vc-completed, vc-cancelled.
Você pode mudar pelo metabox lateral do pedido ou via integrações.
Integrações
WooCommerce (opcional)
- Sincroniza status:
processing → vc-paid,completed → vc-completed,cancelled → vc-cancelled,on-hold → vc-pending. - Se um pedido WooCommerce não tiver vínculo, o plugin cria automaticamente um
vc_pedidoespelhando itens e total, e vincula via meta_vc_wc_order_id(WC) e_vc_linked_wc_order(VC).
Automator (Uncanny/AutomatorWP)
O plugin expõe actions que podem ser usadas como gatilhos de hook personalizado:
vemcomer/order_status_changed, args:(int $vc_order_id, string $new_status, string $old_status)vemcomer/order_paid, args:(int $vc_order_id)vemcomer/webhook_payment_processed, args:(int $vc_order_id, array $payload)vemcomer/restaurant_created, args:(int $restaurant_id)
Use esses nomes nos "Custom Action Hook" dos automators para disparar receitas.
SMClick (Webhooks de Restaurantes)
O plugin integra com SMClick para notificações de eventos relacionados a restaurantes:
- Webhook de Cadastro:
restaurant_registered— dispara quando um restaurante envia o formulário (status pendente). - Webhook de Aprovação:
restaurant_approved— dispara quando o restaurante é aprovado (status muda para publicado).
Sistema de Token de Acesso (access_url)
Quando um restaurante é aprovado:
- Token único gerado: Um token único (
access_url) é gerado automaticamente e armazenado no metavc_restaurant_access_url. - Webhook enviado: O webhook
restaurant_approvedé enviado para a URL configurada (padrão:https://api.smclick.com.br/integration/wordpress/5f98815b-640d-44c9-88b4-f17d6b059b35/) contendo:- Todos os dados do restaurante
- Campo
access_url: token único para acesso - Campo
access_url_validation: URL completa para validação (/validar-acesso/?token={access_url})
- Página de validação: O restaurante pode acessar
/validar-acesso/?token={access_url}para:- Criar uma conta de acesso (email e senha)
- Validar que as senhas coincidem (confirmação)
- Fazer login automático após criação
- Ser redirecionado para o painel do restaurante
Configuração: Em VemComer ▸ Configurações, configure as URLs dos webhooks SMClick para cada evento. O token access_url aparece automaticamente no metabox do restaurante após aprovação.
Changelog
v0.35 - Página de Teste de Reverse Geocoding no Admin
Nova implementação:
- Página de Teste no Admin: Interface para testar o reverse geocoding (conversão de coordenadas em endereço)
- Formulário de Coordenadas: Campos para inserir latitude e longitude
- Exibição de Resultados: Mostra rua, número, bairro, cidade, estado, CEP, país e endereço completo
- Integração com Nominatim: Usa a mesma API do OpenStreetMap usada no frontend
- Dados Brutos: Exibe JSON completo retornado pela API em um detalhes colapsável
Arquivos criados:
inc/Admin/Geocoding_Test.php- Classe para renderizar a página de teste
Arquivos modificados:
vemcomer-core.php- Inicialização da classeGeocoding_TestREADME.md- Documentação da funcionalidade
Funcionalidades implementadas:
- Formulário com validação de coordenadas (lat: -90 a 90, lng: -180 a 180)
- Botão "Testar Geocoding" que faz requisição à API Nominatim
- Exibição de resultados formatados (rua, cidade, estado, etc.)
- Tratamento de erros com mensagens amigáveis
- Loading state durante processamento
- Reutiliza a função
VemComerReverseGeocode.reverseGeocode()se disponível, ou faz requisição direta
Como usar:
- Acesse o admin do WordPress
- Vá em Pedevem → Teste Geocoding
- Informe a latitude e longitude (ex: -16.6864, -49.2643 para Goiânia)
- Clique em "Testar Geocoding"
- Veja os resultados exibidos abaixo do formulário
Exemplo de coordenadas para teste:
- Goiânia: Lat: -16.6864, Lng: -49.2643
- São Paulo: Lat: -23.5505, Lng: -46.6333
- Rio de Janeiro: Lat: -22.9068, Lng: -43.1729
v0.34 - Mobile UI Moderno (Design Estilo iFood)
Nova implementação:
- Design Mobile Completo: Interface moderna estilo iFood para dispositivos móveis
- Top Bar Aprimorado: Logo, seletor de localização (com bairro) e botão de notificações
- Hero Banner Carousel: Carrossel de banners promocionais com navegação por dots e swipe
- Stories Section: Seção de stories estilo Instagram (estrutura pronta, aguardando integração com API)
- Quick Actions: Botões rápidos para Delivery, Reservas, Eventos e Promoções
- Search Bar: Barra de busca com filtros integrada
- Seções de Conteúdo:
- Pratos do Dia (carrossel horizontal)
- Restaurantes em Destaque (grid)
- Todos os Restaurantes (grid com cards)
- Cart Button Flutuante: Botão de carrinho fixo com badge de quantidade
- Story Viewer Modal: Modal completo para visualização de stories com progress bars e navegação
- Meta Tags Mobile: Viewport otimizado, apple-mobile-web-app-capable, viewport-fit=cover
Arquivos criados:
theme-vemcomer/assets/css/mobile-ui.css- Estilos completos do mobile UI (baseado no HTML fornecido)theme-vemcomer/assets/js/mobile-ui.js- JavaScript para funcionalidades (carousel, stories, notificações, cart)theme-vemcomer/template-parts/home/mobile-home.php- Template partial com HTML completo do design fornecido
Arquivos modificados:
theme-vemcomer/header.php- Adicionado botão de notificações no top bar mobile e meta tags mobile otimizadastheme-vemcomer/functions.php- Enqueue demobile-ui.cssemobile-ui.jstemplates/page-home.php- Detecção de mobile (wp_is_mobile()) e renderização do template mobile
Como funciona:
- Quando
wp_is_mobile()retornatruena página home, o templatemobile-home.phpé carregado automaticamente - O template renderiza o HTML completo baseado no design fornecido
- CSS e JavaScript são carregados automaticamente via WordPress enqueue
- O template busca dados reais do WordPress (banners, restaurantes, pratos) e renderiza dinamicamente
Funcionalidades implementadas:
- Banner carousel com auto-play e navegação por swipe
- Estrutura de stories (aguardando integração com API)
- Sistema de notificações (badge com contagem)
- Botão de carrinho com atualização dinâmica
- Cards de restaurantes com favoritos
- Cards de pratos com preços e badges
- JavaScript inline no template para stories viewer completo
Próximos passos (Backend):
- Integrar stories com API REST
- Implementar sistema de notificações
- Conectar pratos do dia com menu items destacados
- Integrar eventos gastronômicos
- Conectar favoritos com API
v0.33.2 - Top Bar Mobile Exibe Bairro ao Invés de Cidade
Novas funcionalidades:
- Top Bar Mobile - Exibição de Bairro:
- Prioriza exibição do bairro sobre a cidade no top bar mobile
- Salva bairro no localStorage (
vc_user_neighborhood) e cookie (vc_user_neighborhood) - Atualização automática quando localização é obtida via reverse geocoding
- Fallback: se não houver bairro, exibe cidade; se não houver cidade, exibe endereço completo
- Integração com Reverse Geocoding:
- Extrai bairro do Nominatim (suburb, neighbourhood, quarter)
- Salva bairro em todas as funções de geolocalização
- Sincroniza bairro entre localStorage e cookies
Arquivos modificados:
theme-vemcomer/header.php- Prioriza bairro na exibição do top bartheme-vemcomer/assets/js/mobile-app.js- Busca bairro primeiro, depois cidadetheme-vemcomer/assets/js/home-improvements.js- FunçãosaveNeighborhood()para salvar bairroassets/js/reverse-geocoding.js- Salva bairro no localStoragetheme-vemcomer/functions.php- Todas as funções de geolocalização agora salvam bairro
Resultado: Top bar mobile agora exibe o nome do bairro (ex: "Centro", "Jardim América") ao invés da cidade, proporcionando informação mais específica e útil para o usuário.
v0.33.1 - Página de Categorias e Menu Mobile Atualizado
Novas funcionalidades:
- Item "Categorias" no Menu Mobile:
- Adicionado entre "Buscar" e "Pedidos" na bottom navigation
- Link para
/categorias/com ícone de grid - Estado ativo destacado quando na página de categorias
- Shortcode
[vc_categories]:- Lista todas as categorias de restaurantes (taxonomia
vc_cuisine) - Grid responsivo com cards de categoria
- Exibe ícone ou imagem da categoria
- Mostra contagem de restaurantes por categoria
- Links para filtrar restaurantes por categoria
- Suporte a imagens customizadas (meta
_vc_category_image) - Ícones padrão para categorias comuns (pizza, brasileira, lanches, etc.)
- Lista todas as categorias de restaurantes (taxonomia
Arquivos modificados:
theme-vemcomer/footer.php- Adicionado item "Categorias" na bottom navinc/Frontend/Shortcodes.php- Novo shortcodesc_categories()com grid de categorias
Próximos passos:
- Criar página
/categorias/no WordPress com o shortcode[vc_categories]
v0.33 - Navegação Mobile App Nativo (Estilo iFood)
Novas funcionalidades:
- Estrutura CSS Mobile-First (
mobile-app.css):- Ocultação de header padrão (
.site-header,#masthead), footer padrão (.site-footer) e sidebars em telas < 768px - Ajuste do body:
padding-top: 60pxepadding-bottom: 80pxpara não esconder conteúdo atrás das barras fixas - Top bar fixa:
position: fixed; top: 0; z-index: 999com fundo branco e sombra suave - Bottom nav fixa:
position: fixed; bottom: 0; z-index: 1000com suporte asafe-area-inset-bottom(iPhone X+)
- Ocultação de header padrão (
- Bottom Navigation Bar (4 itens - estilo iFood):
- Renderizada apenas com
wp_is_mobile()no PHP - 4 ícones SVG inline: Início (Casa), Buscar (Lupa), Pedidos (Lista/Documento), Perfil (Usuário)
- Lógica de UX: Item da página atual recebe classe
.active(cor#ea1d2c) - Links:
/(Início),/busca(Buscar),/meus-pedidos(Pedidos),/minha-conta(Perfil)
- Renderizada apenas com
- Header Minimalista (Mobile Only):
- Exibido apenas com
wp_is_mobile()no PHP - Barra simples com Logo pequeno (à esquerda) e texto "Entregar em: [Endereço Atual] ▾"
- Integrado com sistema de geolocalização (atualização automática)
- Exibido apenas com
- Categorias Estilo Pílulas (Carrossel Horizontal):
- CSS:
display: flex; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; - Estilo: Botões arredondados (border-radius: 20px), fundo cinza claro (
#f2f2f2), texto preto - Item ativo: Fundo vermelho (
#ea1d2c), texto branco - Scrollbar oculta:
::-webkit-scrollbar { display: none; }
- CSS:
Arquivos novos:
theme-vemcomer/assets/css/mobile-app.css- Estilos completos para navegação mobile apptheme-vemcomer/assets/js/mobile-app.js- JavaScript para integração e funcionalidades mobile
Arquivos modificados:
theme-vemcomer/footer.php- Bottom navigation bar com ícones SVG e estados ativostheme-vemcomer/header.php- Top bar minimalista com seletor de endereçotheme-vemcomer/template-parts/home/section-categories.php- Categorias estilo pílulas para mobiletheme-vemcomer/functions.php- Enfileiramento de CSS e JS mobile apptheme-vemcomer/assets/js/home-improvements.js- Disparo de evento customizado para atualização de endereço
Resultado: Experiência mobile idêntica a um app nativo, com navegação controlada pelo polegar na parte inferior da tela, top bar minimalista e categorias em carrossel horizontal estilo pílulas.
v0.32 - PWA (Progressive Web App) - Infraestrutura Completa
Novas funcionalidades:
- Manifest.json: Arquivo de manifesto PWA configurado
- Nome: "VemComer"
- Display:
standalone(remove barra do navegador) - Theme Color:
#ea1d2c(vermelho iFood) - Background:
#ffffff - Ícones: 192x192 e 512x512 (placeholders configurados)
- Shortcuts: Atalho para "Restaurantes"
- Service Worker (
sw.js): Estratégia de cache híbrida- Cache Name:
vemcomer-pwa-v1 - App Shell Pré-cacheado: Home, CSS críticos (style.css, main.css, product-modal.css)
- Estratégias de Cache:
- Network First para APIs REST (
/wp-json/): Tenta rede primeiro, fallback para cache, retorna erro JSON se offline - Cache First para Assets (imagens, CSS, JS): Retorna cache imediatamente, atualiza em background (stale-while-revalidate)
- Network First para Navegação HTML: Tenta rede primeiro, fallback para App Shell se offline
- Network First para APIs REST (
- Ignora: Não intercepta
/wp-admin/ou/wp-login.php - Instalação e Ativação: Auto-install, skip waiting, clients claim
- Cache Name:
- Integração WordPress:
- Meta Tags PWA: Injetadas no
wp_head(manifest, theme-color, apple-touch-icon, apple-mobile-web-app) - Registro do Service Worker: Script inline no footer para registrar SW automaticamente
- Rota Virtual
/sw.js: Rewrite rule para servir SW em escopo global- Query var
vemcomer_swpara identificar requisição - Template redirect para servir arquivo com
Content-Type: application/javascript - Flush automático de rewrite rules na ativação do tema
- Query var
- Meta Tags PWA: Injetadas no
Arquivos novos:
theme-vemcomer/manifest.json- Manifesto PWAtheme-vemcomer/assets/js/sw.js- Service Worker com estratégia de cachetheme-vemcomer/PWA_SETUP.md- Documentação de configuração e setup
Arquivos modificados:
theme-vemcomer/functions.php- Integração PWA completa (meta tags, registro SW, rewrite rules)
Próximos passos:
- Criar ícones PWA (192x192 e 512x512) e salvar em
theme-vemcomer/assets/images/ - Fazer flush de rewrite rules (Configurações → Links Permanentes → Salvar)
- Testar instalação PWA no mobile e desktop
v0.31 - Modal de Upgrade e Pricing (10.3)
Novas funcionalidades:
- Modal de Pricing (Tabela de Preços):
- Interface moderna com 3 colunas (Vitrine, Delivery Pro, Growth).
- Destaque visual para o plano "Delivery Pro" (Recomendado).
- Lista de recursos comparativa (check/cross).
- Fluxo de Assinatura:
- Botões de "Assinar" redirecionam para o WhatsApp do suporte com mensagem pré-formatada contendo o nome do restaurante e o plano desejado.
- Pontos de Entrada:
- Links de upgrade espalhados pelo painel (widget lateral, alerta de limite, blur de analytics) abrem o modal automaticamente.
Arquivos novos:
assets/js/admin-panel.js- Lógica de interação do painel e modal
Arquivos modificados:
inc/Frontend/RestaurantPanel.php- Inclusão do HTML do modal e enfileiramento do JSassets/css/admin-panel-basic.css- Estilos do modal e tabela de preços
v0.30 - Frontend e Dashboard para Plano Vitrine/Básico (10.1 + 10.2)
Novas funcionalidades:
- Layout de Loja Pública Simplificado (Plano Vitrine):
- CSS específico para plano básico (
frontend-basic-plan.css). - Botão "Adicionar" direto (sem modal complexo).
- Layout de cards de itens simplificado (lista).
- Rodapé "Powered by VemComer" obrigatório.
- CSS específico para plano básico (
- Painel do Restaurante Limitado:
- Widget "Seu Plano: VITRINE" com barra de progresso de itens usados.
- Alerta visual quando o limite de itens está próximo (80%).
- Card de Analytics com efeito "Blur Overlay" e botão de upgrade para bloquear acesso a dados avançados.
- Bloqueio visual de itens de menu não permitidos no plano.
Arquivos novos:
assets/css/frontend-basic-plan.css- Estilos para a loja pública básicaassets/css/admin-panel-basic.css- Estilos para o painel admin limitado
Arquivos modificados:
inc/Frontend/RestaurantPanel.php- Integração de widgets de plano e restrições visuaisinc/Frontend/Shortcodes.php- Renderização condicional do layout simplificado
v0.29 - Sistema de Planos/Assinaturas SaaS - Enforcers e Seed (9.1 + 9.2 + 9.3)
Novas funcionalidades:
- Gestão de Planos:
- Planos criados automaticamente via seed: Vitrine (Grátis), Delivery Pro e Gestão & Growth.
- Menu de gestão de planos exposto para o Admin ("VemComer > Planos de Assinatura").
- Atribuição de plano ao restaurante via metabox lateral no editor do restaurante.
- Limites e Restrições (Enforcers):
- Limite de Itens: Bloqueia criação de novos itens no cardápio se o limite do plano for atingido (ex: 20 itens no Vitrine).
- Permissão de Modificadores: Bloqueia criação de modificadores se o plano não permitir (ex: Vitrine não tem modificadores).
- Mensagem WhatsApp Dinâmica:
- Vitrine: Envia mensagem de texto simples.
- Pro/Growth: Envia mensagem formatada rica (negrito, separadores, detalhes).
- Integração Frontend:
- O checkout detecta o plano e ajusta a mensagem enviada ao WhatsApp automaticamente.
Arquivos novos:
inc/Utils/Plan_Seeder.php- Criação automática dos planos padrão
Arquivos modificados:
inc/Admin/Menu_Restaurant.php- Adicionado submenu de Planosinc/Model/CPT_Restaurant.php- Metabox de seleção de planoinc/Model/CPT_MenuItem.php- Validação de limite de itensinc/Model/CPT_ProductModifier.php- Validação de permissão de modificadoresinc/WhatsApp/Message_Formatter.php- Templates dinâmicos (simples vs rico)inc/REST/Orders_Controller.php- Passagem de dados para formataçãovemcomer-core.php- Execução do seed automático
v0.28+ - Implementação Completa de Recursos Backend (Seções 8-25.1)
Todas as seções de 8 a 25.1 foram implementadas:
- ✅ Seção 8: Sistema de Banners da Home (CPT, REST API completa)
- ✅ Seção 9: Sistema de Planos/Assinaturas SaaS (CPT, limites, validação, REST API)
- ✅ Seção 10: Sistema de Geração de Mensagem WhatsApp (Message_Formatter, REST API)
- ✅ Seção 11: Sistema de Endereços de Entrega (Helper, REST API, Geocodificação)
- ✅ Seção 12: Sistema de Disponibilidade em Tempo Real (Helper, REST API)
- ✅ Seção 13: Sistema de Categorias de Cardápio Robusto (ordem, imagem, REST API)
- ✅ Seção 14: Sistema de Busca Avançada (full-text, filtros, ordenação)
- ✅ Seção 15: Sistema de Notificações (Manager, REST API)
- ✅ Seção 16: Sistema de Tempo Estimado de Entrega Dinâmico (Calculator, REST API)
- ✅ Seção 17: Sistema de Preços por Bairro (já implementado, melhorado)
- ✅ Seção 18: Sistema de Múltiplos Métodos de Fulfillment (Pickup adicionado)
- ✅ Seção 19: Sistema de Gestão de Imagens Otimizadas (Image_Optimizer)
- ✅ Seção 20: Sistema de Validação de Pedido Antes do WhatsApp (Validator, REST API)
- ✅ Seção 21: Sistema de Cache Inteligente (Cache_Manager, REST API de invalidação)
- ✅ Seção 22: Sistema de Relatórios Avançados (Restaurant_Reports, REST API)
- ✅ Seção 23: Sistema de Cupons/Descontos Completo (CPT, Validator, REST API)
- ✅ Seção 24: Sistema de Gestão de Usuários Super Admin (Admin_Controller)
- ✅ Seção 25.1: Sistema de Logs e Auditoria Avançado (Audit_Controller, export CSV)
Total de arquivos criados/modificados: 50+ arquivos Total de endpoints REST adicionados: 30+ endpoints Todas as funcionalidades críticas e importantes implementadas!
v0.44 - Frontend Completo - Integração Total com Backend
Implementação completa do frontend cobrindo todas as funcionalidades backend:
Fase 1: Core do Checkout
-
✅ Modal de Produto com Modificadores (Fase 1.1)
- Modal responsivo (bottom sheet no mobile, centralizado no desktop)
- Carrega modificadores via REST API
/menu-items/{id}/modifiers - Valida modificadores obrigatórios e min/max
- Adiciona itens com modificadores ao carrinho
- Cálculo correto de preços incluindo modificadores
-
✅ Checkout Completo com WhatsApp (Fase 1.2)
- Validação de pedido antes de finalizar (
/orders/validate) - Geração de mensagem WhatsApp formatada (
/orders/prepare-whatsapp) - Coleta dados do cliente (nome, telefone, endereço)
- Abre WhatsApp automaticamente com mensagem pronta
- Remove criação de pedido direto (usa validação + WhatsApp)
- Validação de pedido antes de finalizar (
-
✅ Múltiplos Métodos de Fulfillment (Fase 1.3)
- UI de seleção entre Delivery e Pickup
- Exibe preço e ETA de cada método
- Atualiza cálculo de frete baseado na escolha
Fase 2: Social Proof
-
✅ Ratings nos Cards (Fase 2.1)
- Exibe estrelas e avaliação média nos cards de restaurante
- Integrado com
Rating_Helper - Formatação visual consistente
-
✅ Seção de Reviews (Fase 2.2)
- Shortcode
[vc_reviews]integrado no template single - Carrega reviews via REST API
- Formulário para criar nova avaliação
- Paginação de resultados
- Shortcode
Fase 3: Disponibilidade
-
✅ Status Aberto/Fechado (Fase 3.1)
- Badges visuais nos cards (Aberto/Fechado)
- Mostra próximo horário de abertura se fechado
- Bloqueia checkout se restaurante fechado
- Verificação em tempo real via
Schedule_Helper
-
✅ Horários Estruturados (Fase 3.2)
- Migração de campo texto para JSON estruturado
- Suporta múltiplos períodos por dia
- Formatação legível nos shortcodes
- Fallback para campo legado
Fase 4: Engajamento
-
✅ Sistema de Favoritos (Fase 4.1)
- Botões de favorito nos cards de restaurante e itens
- Shortcode
[vc_favorites]para listar favoritos - Integração com REST API
/favorites/* - Atualização visual em tempo real
-
✅ Endereços de Entrega (Fase 4.2)
- Interface para gerenciar endereços salvos
- Seleção de endereço no checkout
- Preenchimento automático de campos
- Suporta criar, editar, deletar e definir principal
Fase 5: Descoberta
-
✅ Busca Avançada (Fase 5.1)
- Filtros: min_rating, is_open_now, has_delivery, price_range
- Busca full-text em restaurantes e itens
- UI organizada e responsiva
-
✅ Filtros Combinados (Fase 5.2)
- Suporta múltiplos filtros simultâneos
- Filtros aplicados no shortcode
[vc_restaurants] - Botão para limpar filtros
Fase 6: Funcionalidades Extras
-
✅ Banners (Fase 6.1)
- Shortcode
[vc_banners]para exibir banners - Layout responsivo com grid
- Suporta links e imagens
- Filtro por restaurante
- Shortcode
-
✅ Notificações (Fase 6.2)
- Shortcode
[vc_notifications]para exibir notificações - Badge com contador de não lidas
- Marcar como lida e marcar todas como lidas
- Formatação de data relativa
- Shortcode
-
✅ Histórico de Pedidos (Fase 6.3)
- Shortcode
[vc_orders_history]para listar pedidos - Filtro por status
- Paginação de resultados
- Exibe detalhes completos (itens, total, frete, desconto)
- Shortcode
Fase 7: Melhorias e Otimizações
- ✅ Cálculo Correto de Preços
- Inclui modificadores no cálculo do subtotal
- Exibe preço total por item no carrinho
- Cálculo correto no checkout
Arquivos criados:
assets/css/product-modal.css,assets/js/product-modal.jsassets/css/favorites.css,assets/js/favorites.jsassets/css/addresses.css,assets/js/addresses.js,assets/js/checkout-addresses.jsassets/css/banners.cssassets/css/notifications.css,assets/js/notifications.jsassets/css/orders-history.css,assets/js/orders-history.jsinc/shortcodes/favorites.php,inc/shortcodes/banners.phpinc/shortcodes/notifications.php,inc/shortcodes/orders-history.php
Total de funcionalidades frontend implementadas: 15 fases completas Cobertura do backend: 100% das funcionalidades críticas e importantes integradas
v0.27 - Sistema de Geração de Mensagem WhatsApp (10.1 + 10.2 + 10.3)
Novas funcionalidades:
- Classe
Message_Formatter: Formatador de mensagens WhatsApp- Template configurável via filtro
vemcomer/whatsapp_message_template - Suporte a itens com modificadores
- Formatação de valores monetários
- Geração de URL do WhatsApp (
wa.me)
- Template configurável via filtro
- Endpoint REST:
POST /orders/prepare-whatsapp- Valida: restaurante existe, está aberto, tem WhatsApp configurado
- Retorna: mensagem formatada e URL do WhatsApp
- Suporta: delivery e pickup, modificadores, cálculo de totais
Arquivos novos:
inc/WhatsApp/Message_Formatter.php- Formatador de mensagens
Arquivos modificados:
inc/REST/Orders_Controller.php- Adicionado endpoint prepare-whatsapp
v0.26 - Sistema de Banners da Home (8.1 + 8.2)
Novas funcionalidades:
- CPT
vc_banner: Custom Post Type para banners da home- Campos: imagem (thumbnail), título, link, restaurante_id (opcional), ordem, ativo
- Meta fields:
_vc_banner_link,_vc_banner_restaurant_id,_vc_banner_order,_vc_banner_active
- REST API completa:
GET /banners- Lista banners ativos (público, ordenados)POST /banners- Criar banner (admin)PATCH /banners/{id}- Atualizar banner (admin)DELETE /banners/{id}- Deletar banner (admin)
- Interface admin: Metabox completo e colunas customizadas
Arquivos novos:
inc/Model/CPT_Banner.php- CPT de bannersinc/REST/Banners_Controller.php- Controller REST
Arquivos modificados:
inc/Admin/Menu_Restaurant.php- Adicionado submenu "Banners"vemcomer-core.php- Registro do CPT e controller
v0.25 - Sistema de Analytics - Middleware de Tracking (7.3)
Novas funcionalidades:
- Tracking automático de eventos:
- Visualização de restaurante: hook em
template_redirectpara single de restaurante - Visualização de cardápio: hook em
template_redirectquando hárestaurant_idna URL - Tracking via REST API: hooks em
rest_prepare_*para visualizações via API
- Visualização de restaurante: hook em
- JavaScript de tracking: Script inline no footer para eventos do lado do cliente
- Cliques no WhatsApp: detecta links
wa.me,whatsapp.com,api.whatsapp.com - Adições ao carrinho: detecta botões com
data-action="add-to-cart" - Início de checkout: detecta botões com
data-action="checkout" - Usa
navigator.sendBeaconpara não bloquear navegação
- Cliques no WhatsApp: detecta links
- Endpoint REST para tracking:
POST /analytics/trackpara receber eventos via JavaScript - Processamento assíncrono: Todos os eventos são logados via shutdown hook (não bloqueiam requisições)
Arquivos novos:
inc/Analytics/Tracking_Middleware.php- Hooks automáticos para trackinginc/Analytics/Tracking_Controller.php- Endpoint REST para tracking via JS
Arquivos modificados:
vemcomer-core.php- Registro dos novos controllers
v0.24 - Sistema de Analytics - Dashboard (7.2)
Novas funcionalidades:
- Endpoint REST de Analytics:
GET /restaurants/{id}/analytics- Métricas: visualizações de restaurante, visualizações de cardápio, cliques WhatsApp, adições ao carrinho, inícios de checkout
- Taxa de conversão: cliques WhatsApp / visualizações de restaurante
- Clientes únicos: total de clientes distintos que interagiram
- Itens mais vistos: top 10 itens do cardápio mais visualizados
- Filtros de período: today, week, month, custom (com date_from e date_to)
- Controle de acesso: Apenas dono do restaurante ou admin pode ver analytics
- Cálculo de métricas: Agregaçã
This README is longer than the copy stored here. Read the rest on GitHub →