Wordpress でカスタム ページ テンプレートを使用しています。私はそれを作るために次の手順に従いました:
- /wp-content/themes/themename/ ディレクトリにある page.php ファイルを、submit.php という別のファイルに複製しました。
テンプレート名を PHP コードの先頭に挿入しました。ここにスニペットを投稿できません。stackoverflow で表示されません。
これで、ページ テンプレートの下の wp-admin パネルに表示されます。
Wordpress のカスタム ページに HTML フォームがあります。PHP は、エンド ユーザーがテキスト領域に入力したデータを読み取り、サーバーに保存されているファイルに書き込みます。
このデータを次のようにファイルに書き込む限り、すべてうまくいきます。
$fp=fopen("filename.txt","w") or die("Can't open the file");
ただし、このファイルの結果として、次のパスで使用できるようになります。
http://sitename.com/wordpress/wp-content/themes/themename/filename.txt
そのため、HTML フォームから読み取ったデータを現在のディレクトリに格納します。代わりに、これを別の場所に保存されているファイルに書き込みたいと思います。まあ言ってみれば:
http://sitename.com/wordpress/files/filename.txt
これを行うために、コードを次のように変更しました。
$fp=fopen("../../../files/filename.txt","w") or die("Can't open the file");
PHP スクリプトが終了し、エラー メッセージが表示され、ファイルを開けませんでした。
以下のように出力をwp-content/uploadsディレクトリに書き込んでみました。
$filename="../../uploads/".$cartype.".txt";
$fp=fopen($filename,"w") or die("can't open the file");
エラーが発生します:ファイルを開けません。
$cartype は、HTML フォーム入力を介して読み取られる単なる値です。
アップロード フォルダーのアクセス許可を既に 777 に設定しています。
私もこれを試しました:
$filename="/wp-content/uploads/".$cartype.".txt";
$fp=fopen(ABSPATH.$filename,"w") or die("can't open the file");
再びエラーが発生します:ファイルを開けません。
後でこの方法でファイルにデータを書き込んでいることに注意してください。
fwrite($fp,$data)
また、これができるようになったら、「ファイル」ディレクトリへのアクセス許可を制限して、wordpress 管理者だけが FTP または同様の代替手段を使用してそのディレクトリ内のファイルを読み取ることができるようにします。
ありがとう。