web-dev-qa-db-fra.com

Pourquoi file_get_contents renvoie-t-il la source de la page?

J'essaie d'écrire un shortcode dans le fichier functions.php de mon thème qui peut afficher le contenu d'un fichier CSV sur notre serveur.

Je ne m'occuperai pas de lire le fichier CSV dans des tableaux, etc. plus tard, mais pour le moment, je veux simplement m'assurer que je peux lire le contenu d'un fichier en utilisant file_get_contents . Cependant, lorsque je lance le shortcode ci-dessous, l'alerte contient du code HTML.

function display_csv_data_func( $atts ) {
   $file_contents = file_get_contents("http://example.com/something/file.csv");
   return "<script>alert('" . $file_contents . "');</script>";
}
add_shortcode( 'display_csv_data', 'display_csv_data_func' );

résultats:

alert('
<!doctype html>
<!--[if lt IE 7 ]> <html class="no-js ie6" lang="en-US"
...

Y at-il quelque chose à propos des codes abrégés, functions.php ou WordPress en général qui interfère avec mon code? On dirait que cela devrait être une chose assez simple à faire ...

1
jeffbeene

Aha, je l'ai compris! Vous devez utiliser wp_remote_get () . Je ne sais pas trop pourquoi, mais voici à quoi ressemble le code:

function display_csv_data_func( $atts ) {
   $file_path = "http://example.com/something/file.csv";
   $response = wp_remote_get($file_path);
   $response_body = wp_remote_retrieve_body($response);
   return "<script>alert('" . $response_body . "');</script>";
}
add_shortcode( 'display_csv_data', 'display_csv_data_func' );
2
jeffbeene