📝

どうしても無料でwordpressサイトを公開したかった(できた)

2023/08/29に公開

https://qiita.com/items/96d5d14abadf19fa1d10


お詫び

Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。


以前までJAMStack信仰にどっぷり使っていた私ですが、ライブラリのメンテナンスや最新化への対応に疲れてしまいました。
結局のところ、JAMStackでwordpressの代替はできますが、運用レベルで考えると面倒くさいので現実的ではないと感じて、wordpressに戻ってきてしまう事になりました。

が、JAMStackで得たノウハウはwordpressにも活かせるので、意味がなかったとは思えませんでした。
今回は、最初から運用を想定してwordpress/JAMStack(本稿ではJAMStackではありませんが、得た知見のお話なので間違ってはいない)のいいとこ取りを考えていきます。

取り上げること

  • wordpressで静的サイトを作ってサーバーにデプロイするまで
  • (参考情報)どういったプラグインを使って運用しているのか、実例紹介

取り上げないこと

  • この運用における問題点や課題
    • まだ知見がないので、実務では採用しようとは思いません。
    • wordpressを使うので、wordpressの問題点をそのまま受け入れる事になります
  • 懸念事項
    • 極端な話、静的サイトジェネレーターとしたプラグイン自体のソースコードを見たわけではないです
    • どういった処理と相性が悪いのか分からないので、使えないプラグインがあるはず。

最低限の機能を実装する

とりあえず記事を書いて公開するところだけやります。

wordpressで静的ファイルを出力する

まずはこれが出来ない事には話になりません。
app/public以下に必要なファイルなどが置かれるのは分かっているので、以下必要なファイルを選定します。
プラグインなどで複雑な事をしなければ面倒くさいけど難しくない作業です。
すごく極端な話をすれば、Seleniumなどでサイトを巡回してソースをぶっこぬいてしまうのが手っ取り早いです。

が、そんな事をしなくてもプラグインでいい感じにやってくれるものがいっぱいあるので、要件にあったものを探してみましょう。

ホスティングサーバーを決める

netlifyとかが有名です。
細かい事を言えばサービスごとの特徴がありますが、今回は感覚で決めてよいです。
APIを使う(axiosとか)予定がないので、本当にファイルを置くだけです。
GithubPagesでも構いません。

静的ファイルをホスティングサーバーにアップロードする

所定の方法に従います。

運用を考える

  • ブラウザで記事を書く
  • 書いた記事をhtmlなどにする
    • プラグインで変換できればブラウザで完結します
    • htmlなのでコメントができなくなります。必要なら別の方法を検討すべきです
  • デプロイする
    • デプロイもブラウザでしたいです。
    • wordpressで完結すればベスト

最低限の機能は既にできているので、wordpressで動かす方法を考えていきます。

記事を書く

これはwordpressの標準機能ですね。

htmlなどにする

これもwordpressのプラグインでやりたいですね。

デプロイする

各サイトにファイルをアップロードする事になるでしょうが、githubと連携すればCI(GithubActions)が使えるので、これを使いましょう。
wordpressからgithubにpushできれば解決できそうです。
「wordpress git push」あたりで検索すると色々情報が出てきます。

CIを作る

ホスティングサービスとGihtubを連携すればいい感じにやってくれるものがありますので、便利なものは使っていきましょう。
必要な設定だけやれば簡単に実現できるはず。

より便利な方法を考えていく

色々書いていたんですが、どうしても本題から外れてしまったので、本稿では扱わない事にしました。
リンク先をご覧ください。

https://nomuraya.tk/2022/03/wordpress_manual/

謝辞

本稿を執筆するにあたり、多くの技術ブログや質問サイトの方にお世話になりました。
この場を借りまして、御礼申し上げます。

GitHubで編集を提案

Discussion