web-dev-qa-db-ja.com

なぜfile_get_contentsがページソースを返すのですか?

私のテーマの functions.php ファイルにショートコードを書き込もうとしていますが、これは私たちのサーバー上のCSVファイルの内容を表示することができます。

CSVファイルを配列などに読み込むことについて心配するつもりですが、今のところは file_get_contents を使用してファイルの内容を確実に読み取れるようにしたいと思います。ただし、以下のショートコードを実行すると、アラートに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' );

以下を返します。

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

ショートコード、functions.php、WordPress全般に関して、コードを妨害しているものはありますか?このようにするのはかなり簡単なことのように思えます...

1
jeffbeene

ああ、私はそれを考え出した! wp_remote_get() を使用する必要があります。この時点でその理由がよくわからないが、コードは次のようになります。

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