WordPressの出力を外部のテキストファイルに書き出し&読み込む方法です。コア部分はPHPで完結してるので、PHPが動く他の環境でも使えます。
作業用の中間ファイルを生成したりコメントのログ取ったりするときにどうぞ。
上手く使うとキャッシュファイル代わりに使えるのでサイトの高速化にも繋がりますよん。(・∀・)
PHPでの出力結果を外部ファイルに書き出す
WordPressから外部ファイルへは PHP の関数 file_put_contents を使って書き出します。
【PHP】
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
file_put_contents では、データを書き込むファイルへのパスと書き込むデータ型を指定してフラグで挙動を調整します。
ソースコード
PHPで外部ファイルに書き出すコードです。まずテキストファイルを定義してから処理を書き、さらにその出力結果を書き込みます。
【PHP】
// 出力用のファイルを定義する
$file = get_template_directory() .'/log.txt';
//
//
// ここに処理を書く
//
//
file_put_contents($file, $処理の出力); // 処理の結果をファイルに書き出す
文字列として出力できるような処理であれば、処理用のコードには何を書いても構いません。
出力用ファイルの用意
filename が存在しない場合はファイルを作成します。ここでは出力用ファイルをテーマディレクトリ直下の「log.txt」としています。
filename は自動的に生成されるはずですが、別の場所で管理したいときは適切な場所にファイルを設置してパスを通して下さい。
うまく動かない場合はプログラムのカレントディレクトリと管理用のパスが合ってるかどうかを確認するといいです。
カレントディレクトリの確認方法
【PHP】
// カレントディレクトリの確認
echo getcwd() . "\n";
パスが繋がらないようなら、PHPの現在地を確認して下さい。出力結果を見て希望のディレクトリに誘導します。
特にWordPressを使っているとテーマディレクトリ中心にパスを繋げがちなので、思わぬところでプログラムが動いてたりするんですよね。(^^;
カレントディレクトリが判ったついでに余計なファイル(ここではlog.txt)が出来てないかどうか確認して、不要なら消しておきます。
パーミッションの確認
プログラムのパスが通ってるはずなのに動かないようならパーミッション(ファイルの実行権限)を確認します。
ページの読み込みによってスクリプトを動かしているため、ファイルのパーミッションを rw-rw-rw- (または 666)など「他人による書き込みを許可」モードにする必要があります。
管理者が作るプログラムで「他人の書き込みを許可」するのは変な感じがしますが、この場合は「WEBページを見る」という誰でも出来る行為をトリガーにしています。そこで自分がサイトオーナーでも「他人」という扱いにする必要があります。
ファイルの作成を確認して無事データを書き出すことが出来たら、まずは第一段階の完了です。
外部のテキストファイルをPHPに読み込む
データの書き出しが出来たら、次は「既に用意された外部テキスト」をPHPの file_get_contents で呼び出します。
外部テキストは成形されたHTMLであれば簡単に取り出せます。
まずは前章で作った log.txt を読み込みましょう。この場合は先の変数 $file がそのまま使えますから、 PHP 越しに呼び出すだけで読み込めるはずです。お手軽。
【HTML】
<?php echo file_get_contents( $file ); ?>
おわりに
…ということでPHPからテキストに落としたり吸い上げるための方法でした。
WordPressが地味に重いのどうにかならないかと思っていて、「頻度の高い処理は静的ファイルで済ませたいよなー」みたいな流れの改造を最近ちまちまやっております。
そこまで処理を軽くしたところで毎日何万人も読者がいるわけじゃないんですけど、表示は速いに越したことはないよねっていう読者サービス 兼 自己満足なのであります。_(:3 」∠)_
【 更新履歴等 】
2016/01/18 初稿発表
2016/04/26 細かく説明足しました
旧URL /wordpress-export-to-text-file/
コメントをどうぞ(´ω`*)