更新しなくなったWordPressを、静的サイトとして残す

2026-10-23 wordpress ruby /posts/2026/2026-10-23-wordpress2html.jpg

Claude Codeに手伝ってもらって作りました。

WordPressで管理していた古いブログがあります。2019年から更新は止まっていたのですが、WordPressは動かし続けていました。更新しないサイトでも、WordPress本体やPHP、プラグインの更新はやめられません。かといって消してしまうと、よそから貼ってもらったリンクも切れてしまいます。

そこで、WordPressのDBとアップロード済みの画像から、同じ見た目のHTMLを作り直すツール(wordpress-archiver)を作って、PHPもMySQLも使わない静的なサイトに置き換えました。上の画像が切り替え後のトップページです。見た目はもとのまま、中身はただのHTMLと画像です。

2つのやり方

更新しなくなったWordPressを静的に残す方法は、大きく2つあると思います。

  1. 公開中のサイトを巡回して保存する(wget --mirrorや、WordPressの静的化プラグインなど)
  2. DBの中身からHTMLを組み立て直す

最初は1.の方法で試しました。手軽ですが、CSSに付く?ver=…や、/?p=123のような短縮URL、/wp-json/などのWordPressらしいURLを一つずつ手当てする必要があります。DBに直接さわれるなら、2.のほうが確実です。巡回で取りこぼす心配がなく、何をどのURLに出すかを自分で決められます。

wordpress-archiverでやっていること

Rubyの標準ライブラリだけで書いていて、DBはmysqlコマンドで読みます。WordPress本体は一切動かしません。

本当に同じになっているか

いちばん気を使ったのは「同じ見た目」です。次の3段階で確かめました。

もとのサイトで切れていた画像(旧ステージング環境の証明書切れ)が、逆に表示されるようになったのはおまけです。

手順

  1. サーバからwp-content/uploadsとテーマ、wp-includesの静的なファイルを手元にコピーする
  2. 設定ファイルにDBの読み方(例: ssh サーバ mysql DB名)と出力先を書いて、ruby wordpress_archiver.rb 設定.ymlを実行する
  3. 手元で表示を確認してから、できたhtdocs/をサーバに置き、VirtualHostのDocumentRootを切り替える

このブログの場合、ビルドは数秒、HTMLは687ファイル、画像を含めて670MBほどでした。切り替え前のWordPressはディレクトリもDBも残してあるので、DocumentRootを戻せばいつでも元に戻せます。

ついでに、左のサイドバーの「Recent Posts」を「About」(ブログの説明と、伊藤製作所への案内)に置き換え、フッターにこのブログについてへのリンクを足しました。DBには手を入れず、ツールの設定ファイルで差し替えています。

おすすめしたいこと

もう更新しないWordPressサイトがあって、DBとファイルにアクセスできるなら、消してしまう前に静的化を検討してみてください。

今回は自分のブログ(Twenty Fifteen)に合わせて作ったので、ほかのテーマではテンプレートを書き足す必要があります。似たようなサイトを抱えている方がいたら、お気軽にご用命ください(仕事依頼受付)。