私が作成しているWordPressサイトのボタンをクリックするとファイルを保存する(csv)という問題があります。私はコードを最小限に単純化しましたが、それはまだ動作していません。ダウンロードを提案する代わりにPHPリダイレクト
マイテンプレートページコード:
<?php
/*
Template Name: My Awesome Custom Page
*/
get_header(); ?>
<html>
<form style= "text-align:center;" name="getcsv" action="test.php" method="post">
<select id="ddl">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select> <br/>
<input name= "export_excel" type="submit" value="Extraire"/>
</form>
</html>
<?php get_footer();
そしてtest.phpをファイルがあります。
<?php
if(isset($_POST["export_excel"]))
{
header('Content-type: application/xls');
header('Content-Disposition: attachment; filename="test.xls"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
$headers = array('Type of Activity', "Number of Activities", "Hours of Instruction");
$row_1 = array($_POST['ddl'], $_POST['ddl'], $_POST['ddl']);
$output = implode(',',$headers);
$output.= "\n";
$output.= implode(',',$row_1);
$output.= "\n";
}
?>
私はボタンをクリックすると、それはhttp://localhost/test/pagedetest/test.phpにhttp://localhost/test/pagedetestから私をリダイレクトし、私はもちろん取得そのページは決して作成されていないので404です。
これは単なるテストケースなので、もう少し複雑にするために構築することができますが、これは動作しません。
私はPHPには単純なエコーに代わりfputcsv機能を使用してみました://出力し、代わりに、フォームのAJAX呼び出しを使用しますが、誰もが持っている場合、それは私に何も(エラーなしか何か)
を与えませんでしたなぜこれが起こっているのか、事前に感謝のアイデア!それは愚かな質問ですが、私のGoogle-FUが何かを上げていなかったと私は長い間、ワードプレスやPHPのいずれかで演奏されていない場合は
乾杯...
申し訳ありません!
答えをありがとう。私はあなたの解決策を試しましたが、ダイスはありませんhttp://localhost/test/pagedetest/test/test.phpまたはhttp://localhost/test.phpをリダイレクトとして取得します。私が理解できないのは、私のURLを変更しようとする理由です。私がAjax呼び出しを行うと、送信したデータを処理して、必要なものを返すだけです。なぜそれはここでそれを違うのでしょうか? – GunslingerPanda
test.phpはどこにありますか?ブラウザの開発ツールに応じてどのようなリダイレクトが行われますか? – janh
あなたは正しいトラックに私を置くと言った、明らかにあなたは明示的にget_template_uri関数でパスを指定する必要があります。 これをファイル名に追加すると、正常に動作します。 ありがとう! – GunslingerPanda