j'ai passé mon thème à travers le plugin de vérificateur de thème et il semble contrarié par l'utilisation de 'file_get_contents' pour obtenir une URL json. J'ai trouvé des messages disant que je devrais utiliser wp_remote_get. Je décode actuellement l'URL avec les éléments suivants:
$url = 'url' . $var;
$json = file_get_contents($url,0,null,null);
$output = json_decode($json,true);
Le message que je reçois du contrôleur de thème est le suivant:
'AVERTISSEMENT: file_get_contents a été trouvé dans les opérations sur les fichiers file.php.'
Est-ce simplement dire cela parce qu'il y a une fonction que je pourrais éventuellement utiliser par wordpress ou pour toute autre raison? Aussi, comment pourrais-je utiliser 'wp_remote_get'. J'ai essayé quelques variantes, remplaçant principalement file_get_contents par wp_remote_get sans succès. Ne semble pas décoder l'URL du tout.
Si vous devez envoyer une réponse JSON, il existe un ensemble de fonctions pour cela. Si vous en avez besoin pour un rappel AJAX:
wp_remote_retrieve_response_message()
wp_remote_retrieve_response_code()
wp_send_json_success()
wp_send_json_error()
wp_send_json()
Serait finalement quelque chose comme ça:
$request = wp_remote_get( 'http://example.com' );
$response = wp_remote_retrieve_body( $request );
if (
'OK' !== wp_remote_retrieve_response_message( $response )
OR 200 !== wp_remote_retrieve_response_code( $response )
)
wp_send_json_error( $response );
wp_send_json_success( $response );
Les deux fonctions wp_send_json_success/_error()
sont des wrappers pour wp_send_json()
, qui inclut wp_die()
à la fin. Donc, il n'y a rien d'autre à faire.
Gardez à l'esprit que 99% de toutes les API distantes envoient 200/OK
en cas d'erreur. Vous devrez toujours inspecter manuellement le résultat et rechercher les erreurs.
Utilisez wp_remote_get () conjointement avec wp_remote_retrieve_body ()
Exemple
<?php
$request = wp_remote_get('http://example.com');
$response = wp_remote_retrieve_body( $request );
echo $response;
?>
Vérifiez la documentation pour des arguments possibles
Vous pouvez utiliser wp_remote_get()
de la manière suivante.
$url = 'url' . $var;
$request = wp_remote_get($url);
// Get the body of the response
$response = wp_remote_retrieve_body( $request );
// Decode the json
$output = json_decode( $response );
$output
a maintenant ce que vous voulez et vous pouvez maintenant faire votre travail
Il existe également une série de didacticiels sur wp_remote_get (). Passez au travers, cela aiderait certainement. Lien - Tutoriel
J'espère que ça aide.