WordPressでページ保存のタイミングでテキストファイル書き出し
通常、WordPressの投稿ページや固定ページを作成して保存するとデータベース内にデータが保存され、テキストファイルが作成されることはありません。
しかし、要望によってはJavaScript(Ajax)で非同期にデータを取ってきたり、別のWebシステムとの連携などでページコンテンツをテキストファイルに保存したものを参照したいこともあるのではないかと思います。
今回はフックポイントを利用した、テキストファイル作成のノウハウをご紹介します。
「edit_post」フックポイントを利用
最初は「save_post」フックポイントを定義していたのですが、うまく動かなかったので「edit_post」フックポイントを利用してテキストファイル保存の命令を割り込みさせることにしました。
「functions.php」に以下のような記述を追加します。
function save_textfile( $post_id ) { $post = get_post($post_id); $slug = $post->post_name; if ($slug == 'hoge') { file_put_contents(get_template_directory() . "/data/{$slug}.txt", $post->post_content); } } add_action( 'edit_post', 'save_textfile');
このコードは、スラッグが「hoge」という投稿ページの場合のみ、本文をテキストファイルに保存するサンプルです。
この記述によって、テーマのテンプレートディレクトリ内のdataフォルダ内に「hoge.txt」というテキストファイルが保存され、更新されるようになりました。
当然ですが、保存先のパスのパーミッションを書き込み許可にしておくことを忘れないようにしましょう。
2016-01-26