これまで jekyll, middleman, hugo などの静的サイトジェネレーターを試してきたけど、どうにも CLI で編集・管理する作業に慣れず長続きしなかった
調べてみると GUI を持ったものもいくつか存在したが情報が少なそうだったので結局ローカルPCで wordpress を使って静的サイトを出力するという、本末転倒気味なことを試してみることにした
途中、静的サイトジェネレーターに慣れた方が良かったのでは…?と思わないでもなかったが、一応それなりな環境が出来てしまったので作業の記録を残しておく
注意点
- 当然ながら標準のコメント機能は完全に機能しなくなる
- wordpress 上で記事を削除しても出力済みの静的ファイルまでは消してくれないので対応が必要
- タグやカテゴリにマルチバイト文字を使っていると正しくリンクされない
- 静的ファイルの出力が非常に遅い(全てのサイト内ページにHTTPリクエストを投げてHTML化しているため)
設定方法
wordpress の詳細なインストール方法は割愛するが、動けばいいので osx なら標準で apache, php はインストールされているため mysql だけ用意すれば良い
最新で揃えたければ適当に
brew install homebrew/php/php71 nginx mysql
など
wordpress 自体の設定はパーマリンク設定を記事ごとに一意のURLを振る形式に必ず変更する
初期設定だとGETパラメータで記事IDを指定するため静的化出来ない
プラグインは Simply Static — WordPress プラグイン を入れる
設定は例えばこのサイトならばリンク先に絶対URLで https://www.yusukezzz.net を使用する
出力先は適当なローカルディレクトリで github pages の git リポジトリとして別途設定しておくと楽
これだけでひとまず静的サイト生成出来るので試しに実行してみる
ちなみにこの blog のソースは yusukezzz/yusukezzz.github.io で見ることが出来る
ダイエット
あとは git push するだけだが、恐らく余分なファイルや表示が含まれているので削りたくなるだろう
出力後のファイルに不要なものが含まれていたらプラグイン設定からエクスクルードをよしなに設定しよう
その他以下自分が気になった点と雑な改善方法を列挙しておく
(wordpress の知見がない人はあまりテーマやプラグインを弄らない方が良い)
- meta タグに不要なのが色々ある
- jquery が不要なのに強制的に読み込まれている
- テーマ上で
wp_head();
している箇所の前でwp_deregister_script('jquery');
する - テーマによっては jquery の存在を前提に jquery-plugin を使っている場合もあるので注意
- テーマ上で
- rss にコメントのフィードURLも含まれている
wp-includes/feed-rss2.php
を適当に編集する
おまけ
静的ファイル生成時に git push まで自動で行う方法の例(プラグインを弄る)
本当に雑なやり方なので全くおすすめしない
最後に呼ばれる処理である、
/wp-content/plugins/simply-static/includes/tasks/class-ss-wrapup-task.php
ファイルの
perform
メソッド内で push 操作を行う
例えば
exec("cd /path/to/your.github.io; git add -A; git commit -m \"update\"; git push");
など