API na GraphQL i wykorzystanie go w PHP (WordPress)

0

Cześć, zarejestrowałem się u Was, bo potrzebuję pomocy w sprawie programistycznej. Dlatego że niestety nie dane mi było urodzić się z tym talentem albo go nabyć. Coś tam potrafię pobawić się w html, php i to na tyle.

Otrzymałem dostęp do gotowego API utworzonego w GraphQL. Potrafię się tym API pobawić w edytorze GraphiQL. Wyświetlić tam dane jakie chce, ilość, kolejność, itp..

Mój problem polega na tym, że kompletnie nie mam pojęcia jak wykorzystać te dane, żeby odpytywać API za pomocą PHP. A tak naprawdę (docelowo) chodzi mi o to, żeby wyświetlić dane na stronie WordPress. Czyli na przykład przekazując zmienne w custom fields w postach WordPress. Custom fields ogarniam, szablony potrafię modyfikować, dodam też funkcję jak trzeba i przekaże do niej odpowiednie parametry, itp.

Tylko właśnie tak jak już pisałem, nie mam pojęcia jak połączyć dane z GraphQL API bezpośrednio z blogiem WordPress.

0

Ja bym na twoim miejscu zobaczył to: https://github.com/softonic/graphql-client

0

To chyba nie przypadek, bo widziałem ostatnio zlecenie z tym api ;)

0

Nikt nie pomoże nakierować mnie, jak to skomunikować z blogiem na WordPress? :)

1

Ale ty chcesz się skomunikować z API GraphQL z Wordpress`a tak?

Takie żądanie to po prostu zwykły HTTP, niczym się nie różni od wysyłania jakiegoś formularza poza strukturą danych, nagłówkami itp. Pokaż kod który napisałeś, napisałeś coś?

0

@Markuz: dziękuję za odpowiedź.

Jeszcze nic nie napisałem, bo z kodowaniem jestem na bakier. Potrafię działać na przykładach i chciałbym to jakoś rozgryźć :)

Mam dostępny Playground GraphiQL i tam potrafię się pobawić. Na przykład taki kod ładnie zwraca mi dane:

{
  category(id:200){
    products(sortBy:{field:discount order:DESC}){
      previousPrice
      minPrice
      name
      id
      discount
    }
  }
}

Tylko jak się do tego odwołać w plikach szablonu WordPress, to nie mam pojęcia. Nie mogę tego nigdzie znaleźć w necie.

1

Musisz wysłać żądanie albo w PHP po stronie serwera albo w JavaScript.

W JS:

fetch('https://1jzxrj179.lp.gql.zone/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ query: '{ posts { title } }' }),
})
  .then(res => res.json())
  .then(res => console.log(res.data));

W PHP (za pomocą np. cURL):

// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://1jzxrj179.lp.gql.zone/graphql");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"query\": \"{ posts { title } }\" }");
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

1 użytkowników online, w tym zalogowanych: 0, gości: 1