Jump to content
Fabricio Guilherme

Ligação com banco de dados externo

Recommended Posts

Olá pessoal, esse é meu primeiro post, gostaria de uma ajuda de alguém que tenha contato com Woocommerce/ Wordpress.

Eu recebi uma solicitação de um cliente para conectar um web service a loja dele, com o objetivo de verificar vagas existentes em pousadas, depois de agrupar os dados do pedido, enviar um formulário para os colaboradores dele e assim, efetuar a venda.

A principio a loja funciona no modo orçamento apenas e por enquanto vai permanecer assim, minha solução foi criar um plugin para o Woocommerce que faz todo esse trabalho de forma externa, usando os ganchos do wordpress.

A minha questão é se o cliente for colocar a loja no modo venda, como vou tratar a quantidade de variações?

O Woocommerce é preparado pra isso ou seria melhor outro gerenciador de loja?
OBS: Pra ficar mais fácil de entender a cliente é uma agência de viagens, como a decolar por exemplo. E portanto se conecta a outros bancos com uma infinidade de variáveis, restrições e métodos diferentes em cada atividade diferentes.
OBS: Estou disposto a novas plataformas que suportem essa complexibilidade de dados, se houver algo PHP + MySQL é muito bem vindo kkkk

Share this post


Link to post
Share on other sites

Olá Fabrício tudo bem?

 

E possível fazer isso sim. Na verdade você tem caminhos. Usar O WebService dentro do functions do seu tema criando assim as rotas que você precisa.

 

Por exemplo: Você vai consumir o WebService dele vai verificar se há vagas na pousada X ou Y e dependendo da conteúdo "Resposta" do WebService você vai alterar o comportamento de algum produto do WooCommerce. 

 

A minha dica para você neste caso é que você crie alguma estratégia para amarrar o item que vem do seu webservice ao produto do WooCommerce, pode ser via String de URL ou até mesmo com algum ID idêntico do WooCommerce com a finalidade de você efetuar a validação no IF ....


Depois de consumir o WebService basta utilizar o Filter do WooCommerce, verificando se o produto atual é IGUAL ao ID que veio do WebService e se o Status dele é "lotado ou há vagas" você muda o comportamento.

 

Agora, caso você não tenha um WebService, basta você criar uma Conexão Remota, adicione um Include no Functions.php do seu tema com uma conexão Externa do PHP... Basicamente você só precisa saber o IP e porta do MYSQL com user e senha com isso você terá todos os Hooks do WordPress + os dados do seu novo banco de dados.

 

Basta executar as queries de acordo com sua regra de negócio e pronto.

 

 

 

Flavio Henrique / Especialista WordPress e CEO da Escola Ninja WP

https://www.escolaninjawp.com.br

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Lenon John
      Simulador de Frete
      Endpoint: https://www.jadlog.com.br/embarcador/api/frete/valor/
      Metodo: POST

      Header:
      Content-Type: application/json
      Authorization: <token>
       
      Código do simulador de frete:
      { "frete": [ { "cepori": "06233200", "cepdes": "17213580", "frap": null, "peso": 13.78, “cnpj”: “12345678901234”, "conta": "000001", "contrato": "123", "modalidade": 3, "tpentrega": "D", "tpseguro": "N", "vldeclarado": 149.97, "vlcoleta": null } ]
    • By Jack Oliveira
      Ola pessoal boa noite a todos...
      Estou tendo uma dificuldade em passar a url que esta sendo digitada no nagevador
      Ou seja uma das url ate que passa, porem as demais url não mostra sempre a mesma pagina que foi aberta
      Creio que seria um tipo de conflitos
      por exemplo: se eu acessar a seguinte url
      Ex1: meusite.com/sao-paulo/list/minha-empresa-aqui/
      e se eu acessar outra url com o mesmo no da empresa da seguinte forma
      Ex2: meusite.com/sao-paulo/catalogo/minha-empresa-aqui/
      ela teria que mostrar o que esta no EX2 mais porem fica na pagina do EX1 mais com a url no navegador do Ex2
      Bom e tbm preciso passar os paramentros da pagina de pesquisa 
      ou fazer uma busca a url me retorna a seguinte forma
      EX3: meusite.com/buscar/?search_string=mercados&cidade=sao-paulo
      e quero que seja mostrar desta forma, 
      EX4: meusite.com/sao-paulo/buscar/mercados/
      caso tenha paginação ela ficar assim ao pegar paginação meusite.com/sao-paulo/buscar/mercados/12/
      Ou seja o que preciso é que não importar quanto paramentros seja queria que mostrasse conforme mostra no comentario do PHP
      segue o código logo a baixo com htaccess
      Talvez seja até coisa simples de se resolver ou pode ser eu fazendo da forma incorreta aqui...
       
      HTACCESS
       
      RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [NC,L] INDEX.PHP
       
      <?php ob_start(); session_cache_expire(60); //session_start(); if (!file_exists('CPANELUSER/database/config.php')) { header("Location: CPANELUSER/setup.php"); } else { require_once ('CPANELUSER/database/config.php'); } require_once ('CPANELUSER/database/config.painel.php'); require_once ('CPANELUSER/database/config.database..php'); require_once ('CPANELUSER/database/config.session.php'); require_once ('CPANELUSER/includes/funcoes.php'); // Obtendo o URL dos arquivos atual //$page = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); function UrlAmigavelPHP(){ if(isset($_GET['url'])) { $url = $_GET['url'] ? $_GET['url'] : "home"; //$search_string = $_GET['search_string'] ? $_GET['search_string'] : "home"; //$cidade = $_GET['cidade'] ? $_GET['cidade'] : "home"; //var_dump($url); //var_dump($search_string); //var_dump($cidade); $UrlFormatada = explode('/', $_SERVER['REQUEST_URI']); if(empty($UrlFormatada[1])) { $URL1 = ''; }else{ $URL1 = ''.$UrlFormatada[1].'/'; } if(empty($UrlFormatada[2])) { $URL2 = ''; }else{ $URL2 = ''.$UrlFormatada[2].'/'; } if(empty($UrlFormatada[3])) { $URL3 = ''; }else{ $URL3 = ''.$UrlFormatada[3].'/'; } if(empty($UrlFormatada[4])) { $URL4 = ''; }else{ $URL4 = ''.$UrlFormatada[4].'/'; } if(empty($UrlFormatada[5])) { $URL5 = ''; }else{ $URL5 = ''.$UrlFormatada[5].'/'; } if(empty($UrlFormatada[6])) { $URL6 = ''; }else{ $URL6 = ''.$UrlFormatada[6].'/'; } //Passando a url completa $Paramentros = ''.$URL1.''.$URL2.''.$URL3.''.$URL4.''.$URL5.''.$URL6.''; }else{ $url = 'home'; } switch($url) { //HOME case 'home'; include_once('directory-home.php'); //meusite.com/cidade-principal/ que vai aparecer no index.php break; //LISTAGEM case $Paramentros; include_once('directory-listagem.php'); //meusite.com/cidade-principal/list/nome-de-uma-empresa/ break; //CATALOGO case $Paramentros; $Query = DBRead('directory_cidades','*',"WHERE status='1' AND slug='".GetUrlBasecidade."'")[0]; $TblEmpresa = DBRead("directory_listing","*","WHERE slug='".GetUrlBase."' AND cidade='{$Query['titulo']}'"); if (is_array($TblEmpresa)) { foreach ($TblEmpresa as $Empresa) { extract($Empresa); $titles = ''.trim(mb_convert_case($titulo, MB_CASE_TITLE, "UTF-8")).' | '.trim(mb_convert_case(ConfigPainel("site_nome"), MB_CASE_TITLE, "UTF-8")).''; $getId = $id; $getu = $id_user; //Url Menu Lateral das Empresas $CidadeUrl = ''.ConfigPainel("site_url").''.GetUrlBasecidade.'/'; $UrlEmpresa = ''.$CidadeUrl.'list/'.GetUrlBase.'/'; $UrlCatalogo = ''.$CidadeUrl.'catalogo/'.GetUrlBase.'/'; $UrlPortfolio = ''.$CidadeUrl.'portfolio/'.GetUrlBase.'/'; $UrlEventos = ''.$CidadeUrl.'agenda/'.GetUrlBase.'/'; $UrlClassificados = ''.$CidadeUrl.'vagas/'.GetUrlBase.'/'; $UrlContato = ''.UrlAmigavel($menu5).''; //Pegando os ids switch ($Empresa['id_destaque']) { case '5': $index_seo = ''; break; case '4': $index_seo = 4; break; case '3': $index_seo = 3; break; case '2': $index_seo = 2; break; case '1': $index_seo = 1; break; case '0': $index_seo = 0; break; } $Query = DBRead('directory_itens','*',"WHERE status='1' AND user_id='{$getu}' ORDER BY nome_item ASC LIMIT 100"); $NomeCity =''.$cidade.''; define("METAKEYWORD", $palavra_chave); define("METADESCRIPTION", $frase); define("METATITLE", ''.(!empty($definir) ? 'Cardápio | '.LetraMaiuscula($titulo) : 'Catálogo | '.LetraMaiuscula($titulo).'').' | '.ConfigPainel("site_nome").''); //1 Cardápio > 2 Catálogo > 3 Imóveis > 4 Produtos //Configuração $QueryEmpresa = DBRead('directory_listing','*',"WHERE id_user='{$getu}' ORDER BY id LIMIT 1")[0]; //company-product $QueryItemCount = DBRead('directory_itens','*', "WHERE status= '1' AND user_id='{$getu}' ORDER BY nome_item")[0]; if($definir == 1) { $Menu1 = $QueryEmpresa['menu1']; if($QueryItemCount['user_id'] == $getu) { $Status1 = 1; //1 Ativo }else{ $Status1 = 0; //0 Inativo } $Icone = 'fa-cutlery'; }elseif($definir == 2) { $Menu1 = $QueryEmpresa['menu1']; if($QueryItemCount['user_id'] == $getu) { $Status1 = 1; //1 Ativo }else{ $Status1 = 0; //0 Inativo } $Icone = 'fa-shopping-bag'; }elseif($definir == 3) { $Menu1 = $QueryEmpresa['menu1']; if($QueryItemCount['user_id'] == $getu) { $Status1 = 1; //1 Ativo }else{ $Status1 = 0; //0 Inativo } $Icone = 'fa-home'; }elseif($definir == 4) { $Menu1 = $QueryEmpresa['menu1']; if($QueryItemCount['user_id'] == $getu) { $Status1 = 1; //1 Ativo }else{ $Status1 = 0; //0 Inativo } $Icone = 'fa-product-hunt'; } //company-portfolio $QueryPorCount = DBRead('directory_portifolio','*', "WHERE status= '1' AND id_user = '{$getu}' ORDER BY id")[0]; $Menu2 = $QueryEmpresa['menu2']; if($QueryPorCount['id_user'] == $getu) { $Status2 = 1; //1 Ativo }else{ $Status2 = 0; //0 Inativo } //company-events $Menu3 = $QueryEmpresa['menu3']; $QueryAgCount = DBRead('directory_agenda','*', "WHERE status= '1' AND idempresa = '{$getId}'")[0]; if($QueryAgCount['idempresa'] == $getId) { $Status3 = 1; //1 Ativo }else{ $Status3 = 0; //0 Inativo } //company-blog $QueryNumBlog = DBRead('directory_emprego','*',"WHERE status='1' AND id_empresa = '{$getId}'")[0]; $Menu4 = $QueryEmpresa['menu4']; if($QueryNumBlog['id_empresa'] == $getId) { $Status4 = 1; //1 Ativo }else{ $Status4 = 0; //0 Inativo } //company-contact $Menu5 = $QueryEmpresa['menu5']; define("METAURL", "".ConfigPainel("site_url")."".$UrlCatalogo.""); define("METAIMAGEM", "".ConfigPainel("site_url")."assets/".GetUrlBase."/".$logo.""); if (empty($index_seo)) { define("METAINDEXAR", "noall, noindex, nofollow"); //noall, noindex, nofollow //Redireciona(ConfigPainel("site_url")); }else{ define("METAINDEXAR", "all, index, follow"); //all, index, follow } } } else{ //Redireciona(''.ConfigPainel("site_url").''.UrlAmigavel($cidade).'/'); } require_once('Inc/hora.php'); $diasemana = array('Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'); $data = date('Y-m-d'); $diasemana_numero = date('w', strtotime($data)); $diadehoje = $diasemana[$diasemana_numero]; //$todososdias = 'null'; include_once('directory-catalogo.php');//meusite.com/cidade-principal/catalogo/nome-de-uma-empresa/ break; //PORTFOLIO case $Paramentros; include_once('directory-portfolio.php');//meusite.com/cidade-principal/portfolio/nome-de-uma-empresa/ break; //AGENDA case $Paramentros; include_once('directory-agenda.php');//meusite.com/cidade-principal/agenda/nome-de-uma-empresa/ break; //BLOG case $Paramentros; include_once('directory-blog.php');//meusite.com/cidade-principal/vagas/nome-de-uma-empresa/ break; //PESQUISAR case $Paramentros; include_once('directory-buscar.php');//meusite.com/cidade-principal/buscar/loja/ break; //SOBRE case $Paramentros; include_once('directory-sobre.php');//meusite.com/cidade-principal/sobre/ break; //PLANO case $Paramentros; include_once('directory-plano.php');//meusite.com/cidade-principal/plano/ break; //CONTATO case $Paramentros; include_once('directory-contato.php');//meusite.com/cidade-principal/contato/ break; default; include_once('directory-404.php'); break; } } UrlAmigavelPHP(); ?> Perdoa se ficou muito grande os codigo ai na parte do catalogo coloquei para poder ver como estou recendo os paramentros
       
      Desde já fico no guardo se alguém puder dar uma idiea ai
    • By Lenon John
      Detalhe importante:
      Se eu digito MINHA_CHAVE_JADLOG incorreta, ai eu recebo um retorno informado que as credenciais estão incorretas.
      Se eu digito MINHA_CHAVE_JADLOG corretamente, não recebo nenhum retorno.

      $dados = [
        'frete' => [
          'cepori' => '29010070',
          'cepdes' => '29300040',
          'frap' => '',
          'peso' => 2,
          'cnpj' => '00000000000100',
          'conta' => '000001',
          'contrato' => '',
          'modalidade' => 4,
          'tpentrega' => 'D',
          'tpseguro' => 'N',
          'vldeclarado' => 100,
          'vlcoleta' => ''
        ]
      ];
      $postfields = http_build_query($dados);
       
      $header = array();
      $header[] = 'Authorization: Bearer MINHA_CHAVE_JADLOG';
      $header[] = 'Content-Type: application/json';
      $header[] = 'description:';
       
      $curl = curl_init('https://www.jadlog.com.br/embarcador/api/frete/valor/');
      curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
       
      $exec = curl_exec($curl);
      $jadlog = json_decode($exec);
       
      curl_close($curl);
       
      print_r($jadlog);
    • By PToledo
      Olá Pessoal, preciso criar uma tabela exibindo F(falta) ou P(Presença) ou A(Abono)
      Para os 12 meses do Ano..Para os 31 dias do MES
       

       
      Minha tabela no mysql
       

       
      Gostaria de criar um select, já criando a linha mensal (jan, Fev...) e preenchendo os dias com presença P ou A abono.
       
      Quem puder me ajudar agradeço.
       
       
       
       
    • By PToledo
      Olá Pessoal, preciso criar uma tabela exibindo F(falta) ou P(Presença) ou A(Abono)
      Para os 12 meses do Ano..Para os 31 dias do MES
       

       
      Minha tabela no mysql
       

       
      Gostaria de criar um select, já criando a linha mensal (jan, Fev...) e preenchendo os dias com presença P ou A abono.
       
      Quem puder me ajudar agradeço.
       
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.