Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/gogoweb/55w.jp/public_html/techblog/wp-content/plugins/ultimate-google-analytics/ultimate_ga.php on line 524
Facebook にシェア
[`evernote` not found]
LINEで送る

テーマを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も更新するようにシェルを組むとなお便利です。