【WordPress】書いたブログの長文がすべて消し飛んだので自動で下書き保存するスクリプトを書いてみた

パソコンで、WordPressを使って、長文のブログを書いていました。

しかし、途中で間違えて、関係のないメニューをマウスでクリックしてしまったら、別ページへ遷移・・・。

急いで、ヒストリーバックするも、書いていた記事はサッパリ消えて真っ白。頭の中も真っ白。

2度と同じことがないように、WordPressのリビジョンを確認してみるも、なぜかタイマー式で自動で保存してくれない。

define('AUTOSAVE_INTERVAL', 1800); //自動保存の間隔を制御する設定

こんな定数も設定できると書いているブログもあったけど、自分の環境では「下書き保存」ボタンを押すまで、リビジョンに追加されない。

実に困りました。

しかし、それなら、自動で「下書き保存」ボタンを押してもらえばいいじゃん!ということで、

管理画面で、javascript を実行できないか調べてみる。

↓こちらのサイトを見てみると、

できることがわかったので、コードを書きました。

//管理編集画面のオートセーブ機能
function admin_func() {
echo '<script>var auto_save = function(){if(document.getElementById("title").value != ""){var ele = document.getElementById("save-post");if(ele != null){ele.click();}}};setInterval(auto_save, 60000);</script>';
}
add_action('admin_head-post-new.php', 'admin_func');
add_action('admin_head-post.php', 'admin_func');

これを 外観 → テーマエディタ → テーマのための関数(function.php) に追加して、投稿画面だけに反映させます。

これによって、記事にタイトルが書かれていれば、

ブログを公開するまで表示される「下書き保存」ボタンが1分毎に押されます。

これで、間違えて別ページへ遷移した時のダメージがだいぶ減るかと思います。