Pergunta

I am new to coding with php and using the Google Books API. Since there is a 1000 request limit per day for the Google Books API, I am just making sure my code is not clunky before I enabling billing. Below is how I am currently getting the book cover image to display with my WordPress posts:

<?php
  $url = get_post_meta($post->ID, 'URL', true);
  if($url != '') { echo "<a href='$url' target='_blank'>"; } ?>
  <div class="book-cover">
    <?php
      $isbn = get_post_meta($post->ID, 'ISBN', true);
      $page = file_get_contents("https://www.googleapis.com/books/v1/volumes?q=isbn:$isbn&key=xxxx");
      $data = json_decode($page, true);
      $cover = $data['items'][0]['volumeInfo']['imageLinks']['thumbnail']; 
       echo "<img src='$cover' />"; ?>
  </div><?php if($url != '') { echo "</a>"; }
?>

Thank you very much for any assistance!

Foi útil?

Solução

From what I understand from your code, you need the URL of a book image to print in a template file.

Ideally this should be in a plugin, or at the very least in a separate class / function in your theme. Mixing presentation code (HTML) with logic isn't a good practice.

Regarding the number of requests to the API, unless you have a very small number of visitors, you should save data that you get from the API locally so you don't make multiple requests to get the same data.

Since you're starting with PHP you might want to look for similar plugins and study their code.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top