投稿データをJSONとして保存しておく
テーマをGitで管理する際に
各種投稿データも保存したいのですが、毎回データをSQLに吐き出すのも大変なので
投稿を保存する際にsave_postでフックしてjsonで指定場所に出力するようにしました。
add_action("save_post",function($post_id, $post ){ //jsonを保存するパス。あらかじめ作成しておくこと $path = ABSPATH . "jsonlog/" . $post->post_type . "-" . $post_id . ".json"; //カスタムフィールドも保存する $meta = get_post_custom($post_id); $post->meta = $meta; //投稿情報を成形してJSON形式に変更 $json = json_encode($post, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); //保存 $ret = file_put_contents($path,$json); }, 10, 2 );
最初はテーマ内にログを出そうと思いましたがGitの管理上わかりにくくなるのと
テーマを切り替えた場合リセットされるので別口に変更しました。
投稿が更新された場合、ファイルも上書きされるので更新するたびにgitも更新するようにシェルを組むとなお便利です。