Jump to content
FabianoSouza

Ler dados externos em JSON

Recommended Posts

Pessoal, estou iniciando agora em Wordpress. Mas já me viro bem com HTML,  CSS, Javascript, ASP Clássico e SQL Server.

 

Meu primeiro desafio com WP é saber como faço para receber uma string em JSON de outro site.

Essa string contém registros de um banco de dados, então precisarei montar uma tabela em HTML para exibir dos dados...

 

Quero saber onde, dentro do WORDPRESS, eu consigo faze isso. É direto no código fonte? Dá pra usar plugin??

 

Por onde sigo??

 

Obrigado.

Share this post


Link to post
Share on other sites

@FabianoSouza Fala Jovem. Então, a base do WP é PHP, sendo assim, você pode trabalhar com as funções:

file_get_contents () : Função do PHP usada para ler um arquivo em uma string.
json_decode () : Função que pega uma string JSON e a converte em uma variável PHP que pode ser uma matriz ou um objeto.

Depois disso, é só fazer o loop para montar a sua tabela com os dados. Um exemplo bem básico:

$json = file_get_contents('your_url');
$obj = json_decode($json, true);
foreach ($obj as $key => $val) {
  if(!is_array($val)) {
    print $key." : ".$val . "<br>";
  }
}

Dentro do WP você tem algumas alternativas para apresentação dos dados, isso depende de como será a manutenção e o que será melhor, por exemplo, se o site é seu e você vai gerenciar, se é para algum cliente, tema próprio ou de terceiros, entre outros, mas de um modo geral você pode:

Criar uma página e no modo code (dentro do próprio editor) adicionar as funções/rotinas a esta página;

Criar a função com as rotinas no arquivo "functions.php" por exemplo e chamar esta função dentro das páginas;

Criar um widget ou seu próprio plugin com essa funcionalidade;

Utilizar um plugin de terceiros.

 

Enfim, não sei se vai ajudar muito mas espero que tenha dado um norte, qualquer coisa estamos aí.

Abs.

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 Samuel Pietro
      Olá pessoal!

      Preciso da ajuda de vocês no seguinte!
      Tenho um arquivo retornos.json
       
      { "retornos": [ { "id": 1, "sigla": "00", "nome": "Efetuado" }, { "id": 2, "sigla": "01", "nome": "Inválido" }, { "id": 3, "sigla": "02", "nome": "Corrompido" } ] }
      E na minha aplicação feita com CodeIgniter tenho uma consulta que me mostra a sigla que está cadastrada no BD.
       
      foreach ($results as $r) {  $retorno = $r->codRetorno; } 
      Eu preciso que essa consulta ao me retornar a sigla 02 por exemplo o echo apresente o "nome" para tal "sigla" que esta cadastrada no JSON.

      No caso seria a seguinte lógica: 
      if ("$retorno" == JSON["sigla"]){ echo JSON["nome"];  } //ESTE NÃO É UM CÓDIGO VÁLIDO, É APENAS PARA FINS DE ENTENDER A LÓGICA DO QUE EU PRECISO. // PS. ESSA LOGICA PRECISA SER APLICADA DENTRO DE UM FOREACH COM MILHARES DE REGISTROS.
      Como eu posso fazer isso?
       
    • By ghlevin
      Possuo uma Console Application em C# que faz a extração de dados do Dynamics 365 Customer Voice, da Microsoft. O código abaixo pega dados de tabelas de Projetos, Pesquisas, Perguntas e Respostas respectivamente. Os dados extraídos vão para arquivos JSON que ficam salvos no meu HD.
          using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Query;     using System;     using System.Collections.Generic;     using System.Linq;     using System.Text;     using UmbracoMVC.App_Code.Infrastructure.CRMIntegration.Business;     using System.IO;     using Microsoft.Crm.Sdk.Messages;     using System.Globalization;     using E2BWorkflow.Classes;     using System.Web.Management;     using System.ServiceModel;     using System.Drawing;     using System.Web.UI.WebControls;     using System.Web.Script.Serialization;            namespace ConsoleApplication1     {         class Program         {             static void Main(string[] args)             {                 GetCustomerVoice();             }                  public static void GetCustomerVoice()             {                 IOrganizationService crmServiceTo;                      crmServiceTo = Connect.Crm("myemail@e-mail.com", "mypassword", "https://mydynamics.crm4.dynamics.com/XRMServices/2011/Organization.svc");                      // Get Projects                 QueryExpression qP = new QueryExpression("msfp_project");                 qP.ColumnSet = new ColumnSet(true);                 var projects = crmServiceTo.RetrieveMultiple(qP);                 foreach (var p in projects.Entities)                 {                     msfp_project project = p.ToEntity<msfp_project>();                 }                 var projectsList = projects.Entities.Select(                     s => new {                         msfp_projectId = s.Attributes["msfp_projectid"],                         msfp_name = s.Attributes["msfp_name"]                     }                 ).ToList();                      var jsonSerialiser = new JavaScriptSerializer();                 var json = jsonSerialiser.Serialize(projectsList);                 System.IO.File.WriteAllText(@"C:\MyDirectory\projects.json", json);                      // Get Surveys                 QueryExpression qS = new QueryExpression("msfp_survey");                 qS.ColumnSet = new ColumnSet(true);                 var surveys = crmServiceTo.RetrieveMultiple(qS);                 foreach (var s in surveys.Entities)                 {                     msfp_survey survey = s.ToEntity<msfp_survey>();                 }                 var surveysList = surveys.Entities.Select(                     s => new {                         msfp_surveyId = s.Attributes["msfp_surveyid"],                         msfp_name = s.Attributes.Contains("msfp_name") ? s.GetAttributeValue<string>("msfp_questiontext") : "",                         msfp_anonymousurl = s.Attributes.Contains("msfp_anonymousurl") ? s.GetAttributeValue<string>("msfp_anonymousurl") : "",                         msfp_friendlyname = s.Attributes.Contains("msfp_friendlyname") ? s.GetAttributeValue<string>("msfp_friendlyname") : "",                         msfp_surveyurl = s.Attributes.Contains("msfp_surveyurl") ? s.GetAttributeValue<string>("msfp_surveyurl") : "",                         msfp_projectId = s.Attributes.Contains("msfp_project") && s.GetAttributeValue<EntityReference>("msfp_project").Id != null ? s.GetAttributeValue<EntityReference>("msfp_project").Id : Guid.Empty                     }                 ).ToList();                      jsonSerialiser = new JavaScriptSerializer();                 json = jsonSerialiser.Serialize(surveysList);                 System.IO.File.WriteAllText(@"C:\MyDirectory\surveys.json", json);                      // Get Questions                 QueryExpression qQ = new QueryExpression("msfp_question");                 qQ.ColumnSet = new ColumnSet(true);                 var questions = crmServiceTo.RetrieveMultiple(qQ);                 foreach (var q in questions.Entities)                 {                     msfp_question question = q.ToEntity<msfp_question>();                 }                 var questionsList = questions.Entities.Select(                     s => new {                         msfp_questionId = s.Attributes["msfp_questionid"],                         msfp_questionText = s.Attributes.Contains("msfp_questiontext") ? s.GetAttributeValue<string>("msfp_questiontext") : "",                         msfp_surveyId = s.Attributes.Contains("msfp_survey") && s.GetAttributeValue<EntityReference>("msfp_survey").Id != null ? s.GetAttributeValue<EntityReference>("msfp_survey").Id : Guid.Empty                     }                 ).ToList();                      jsonSerialiser = new JavaScriptSerializer();                 json = jsonSerialiser.Serialize(questionsList);                 System.IO.File.WriteAllText(@"C:\MyDirectory\questions.json", json);                      //Get Question Responses                 QueryExpression qR = new QueryExpression("msfp_questionresponse");                 qR.ColumnSet = new ColumnSet(true);                 var responses = crmServiceTo.RetrieveMultiple(qR);                 foreach (var r in responses.Entities)                 {                     msfp_questionresponse response = r.ToEntity<msfp_questionresponse>();                 }                      var responsesList = responses.Entities.Select(                     s => new {                         msfp_questionresponseId = s.Attributes["msfp_questionresponseid"],                         msfp_questionresponse = s.Attributes["msfp_name"],                         msfp_questionId = s.GetAttributeValue<EntityReference>("msfp_questionid").Id                     }                 ).ToList();                      jsonSerialiser = new JavaScriptSerializer();                 json = jsonSerialiser.Serialize(responsesList);                 System.IO.File.WriteAllText(@"C:\MyDirectory\responses.json", json);                      Console.WriteLine("END");                 Console.ReadKey();             }         }     } Agora o que eu preciso é que esses JSONs sejam salvos dentro de um contêiner de um blob em uma Conta de Armazenamento Azure. Procurei várias soluções na Internet, mas não estou bem certo do que deveria usar em uma Console Application.
    • By Matheus B. Siqueira
      Fala pessoal, meu problema é o seguinte: Tento retornar os valores do json_encode via AJAX, só que na hora de armazenar no const ele da erro de:
      <b>Notice</b>: Undefined variable: videos_pendentes in <b>C:\xampp\htdocs\tcc\monitor.php</b> on line <b>504</b><br /> <br /> <b>Notice</b>: Trying to access array offset on value of type null in <b>C:\xampp\htdocs\tcc\monitor.php</b> on line <b>504</b><br /> null); Não sei qual seria a melhor forma de retornar esses dados, alguma sugestão?
      AJAX:
      $('#btn-lista-videos-carousel').click(function() { var nome_monitor = $("#nomecomp").val(); $.ajax({ url: 'pesquisar_video_pendente.php', data: {nome_monitor}, dataType: 'json', type: "POST", complete: function(data) { const videos_pendentes = JSON.parse(<?php echo json_encode($videos_pendentes[0]) ?>); let itens = ''; let indicadores = ''; $('#botaobaixar').hide(); $('#tudo_monitor').hide(); $('#carouselExampleIndicators_2').hide(); if (videos_pendentes.length > 0) { videos_pendentes.forEach(function(video, indice) { indicadores += '<li data-target="#carouselExampleIndicators" data-slide-to="' + indice + '" class="' + (indice == 0 ? 'active' : '') + '"></li>' itens += '<div data-link_video="' + video.link_video + '" data-id="' + video.idvideo_monitor + '" data-titulo="' + video.titulo_video + '" data-situacao="' + video.situacao + '" class="carousel-item ' + (indice == 0 ? 'active' : '') + '">'; itens += ' <iframe width="100%" height="350" src="https://www.youtube.com/embed/' + video.link_video + '" frameborder="0" allowfullscreen></iframe>' itens += '</div>'; }); $('#tudo_monitor').show(); $('#carouselExampleIndicators').show(); $('#carousel-indicadores').html(indicadores); $('#carousel-itens').html(itens); } else { alert('Nenhum vídeo pendente'); } } }); }); E o meu PHP, a qual busca os dados no mysql:
      <?php $monitor = $_POST['nomecomp']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor, $usuario, $senha, $banco); $consulta = "SELECT * FROM video_monitor WHERE video_monitor.monitor = '$monitor' AND video_monitor.pendente = 1 OR video_monitor.pendente = 3"; $resultados = mysqli_query($conexao, $consulta); $videos_pendentes = array(); while ($video = mysqli_fetch_assoc($resultados)) $videos_pendentes[] = $video; mysqli_free_result($resultados); mysqli_close($conexao); $videos_pendentes = json_encode($videos_pendentes); echo json_encode($videos_pendentes); ?>  
    • By Matheus B. Siqueira
      Olá, tento fazer uma requisição para atualização de item do accordion no mysql, porém apenas um item é atualizado.
      O código funciona da seguinte forma: É buscado perguntas referente ao vídeo selecionado no carousel, logo após, o código da Amostra de Código 1, cria os cards dentro do modal. Cada card é referente a uma pergunta diferente registrada no Banco de Dados.
      Porém, ao tentar atualizar um item do MYSQL, dentro do card, no textarea, o primeiro item (1º pergunta) desse accordion é atualizado, o segundo item (2º pergunta) não é atualizado.
      Cada pergunta possui um id no MYSQL, bem como, um assunto, uma resposta, uma pergunta... de acordo com a Figura 01.
      Vale ressaltar que, de acordo com a Amostra de Código 2, é buscado juntamente com o AJAX, todas as perguntas referente ao vídeo selecionado no carousel.
      Amostra de Código 1:
      $(document).ready(function() { $(function() { $('#responder_duvidas').click(function() { var codigoVideo2 = $('.carousel-item.active').attr('data-link_video'); var accordion2 = ""; $.post("buscar_duvida_monitor_resp.php", { codigo_video_monitor: codigoVideo2, }, function(data2, status) { if (data2 !== "Fail") { $("#dynamic_accordion #accordion").html(accordion2); // Adiciona essa linha $.each(JSON.parse(data2), function (index2, duvida3) { accordion2 += '<div class="card" style="margin: 5px">'; accordion2 += '<div class="card-header" id="heading'+index2+'">'; accordion2 += '<h5 class="mb-0">'; accordion2 += '<button class="btn btn-link" data-toggle="collapse" data-target="#collapse'+index2+'" aria-expanded="true" aria-controls="collapse'+index2+'">'; accordion2 += duvida3.assunto; accordion2 += '</button>'; accordion2 += '</h5>'; accordion2 += '</div>'; accordion2 += '<div id="collapse'+index2+'" class="collapse" aria-labelledby="heading'+index2+'" data-parent="#accordion">'; accordion2 += '<div class="card-body">'; accordion2 += '<div style="background: #ddd; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += duvida3.pergunta; accordion2 += '</div>'; accordion2 += '<hr>'; accordion2 += '<div style="background: #fff; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += '<form method="post" enctype="multipart/form-data">'; accordion2 += '<textarea class="form-control" name="resposta" id="resposta" required>'+duvida3.resposta+'</textarea>'; accordion2 += '<input type="hidden" id="id_duvidas" value="'+duvida3.idduvidas+'" />'; accordion2 += '<br><button type="button" id="enviar_resposta" class="btn btn-success btn-sm">Enviar resposta</button>'; accordion2 += '</form>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; $("#dynamic_accordion #accordion").html(accordion2); }); } }); }); $(document).on("click", "#enviar_resposta",function(){ $.ajax({ url: "atualizar_resposta.php", method: "POST", data: { resposta: $('#resposta').val(), idduvidas: $('#id_duvidas').val() }, success: function(res) { var data = JSON.parse(res); alert((data.success == true) ? "Pergunta atualizada" : "Pergunta não atualizada"); $('.modal-backdrop').remove(); return; } }); // fecha modal $("#modalDuvidas").modal("hide"); }); }); }); Figura 1:

       
       
      Amostra de Código 2:
      <?php if (isset($_POST['idduvidas']) && isset($_POST['resposta'])) { $id_resposta = $_POST['idduvidas']; $resposta = $_POST['resposta']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor,$usuario,$senha,$banco); $consulta2 = "UPDATE duvidas SET duvidas.resposta = '$resposta' WHERE duvidas.idduvidas = '$id_resposta'"; die(json_encode(['success'=>(mysqli_query($conexao, $consulta2))])); } Figura 2 (FIGURA COMPLEMENTAR APRESENTANDO O ACCORDION NO WEBSITE)

       
      Por fim, este tópico auxilia em um tema que é específico, porém, pode ser utilizado para outros fins de programação, bem como, a utilização de definição de váriantes em accordion com maiores itens.
      Desde já, agradeço.
       
    • By lUANZIKA3
      Opa tudo bem?
      Bom eu estou tentando colocar uma api no meu site só que não faço a minima ideia por onde começar pós eu não sem a linguagem JSON, sou leigo estou começando agora só preciso disso para finalizar meu projeto. 
      Aqui está a API 
      curl —X POST -c cookies.txt —d "login=testaccount&password=testaccountpassword1234" https://www.myadcash.com/console/login_proxy.php Ai depois com o token
      curl -X POST -b cookies.txt —d "token=TOKEN&call=get_publisher_detailed_statistics&start_date=2018-08-02&end_date=2018-08-015" https://myadcash.com/console/api_proxy.php A pagina aonde eu quero integrar essa API
      <?php session_start(); require_once 'checklog.php'; require_once 'init.php'; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Hello, world!</title> </head> <body> ....... </body> </html>  
×

Important Information

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