WordPressで画像管理
当サイトでは、WordPressをヘッドレスで使っています。
今回は、ヘッドレスWordPressで問題になりがちな、画像管理の方法をまとめます。
ヘッドレス利用でなくても、単に画像管理したい場合にも使える方法だと思います。
なお、当サイトはプラグインを使わない方法を採用していますが、プラグインを使った場合についても、最後に少しだけ説明しています。
やりたいこと
WordPressに画像をアップロードするとき、初期設定では、 https://domain.com/サブディレクトリ/wp-content/uploads/年/月/ファイル名.webp
というような画像URLになると思います。
しかし、これではWordPressの保存場所が分かってしまって、ヘッドレス化の恩恵が少なくなります。
そこで、このURLを、 https://domain.com/img/年/月/ファイル名.webp
にする方法を探しました。
方法1 wp-admin/options.php
2023年4月現在、検索した範囲では、この方法がもっとも利用されていると思います。
wp-admin
画面で、options.php
をURLに追記すると、オプション画面が表示されます。
このオプションで、 upload_path
と、 upload_url_path
のところを編集すれば、アップロード先を変更できます。
ただし、当サイトの環境だと、新しく「年/月フォルダー」を作成するときに、エラーが出ました。
わたしが利用しているレンタルサーバーのセキュリティ設定が、WordPressと相性が良くないのかもしれません。
その場合、WordPressの左側のメニューから、「設定」の「メディア」を選択し、「アップロードしたファイルを年月ベースのフォルダーに整理」のチェックを外すと、うまくいくようです。
とはいえ、わたしは「年/月フォルダー」を利用したかったので、別の方法を模索しました。
方法2 wp-admin/options.php & .htaccess
そこで、 upload_path
は空欄にして、 upload_url_path
の方のみ、変更することを考えます。
このとき、画像自体はあいかわらず「/サブディレクトリ/wp-content/uploads/年/月/フォルダー」に入ったままなので、URLでアクセスしたときに、リライトされるような設定が必要になります。
当サイトで利用しているレンタルサーバーはアパッチサーバーで、.htaccess
が使えますから、 rewriteengine
を利用します。
たとえば、 以下のような1行を記述すれば、uploads フォルダに自動的に移動してくれるはずです。
RewriteRule img/(.*) サブディレクトリ/wp-content/uploads/$1 [QSA]
当サイトは、この方法により「/img/年/月フォルダー」を利用することができました。
方法3 WP Original Media Pathプラグイン
当サイトでは、上記の方法でうまくいきましたので、プラグインを使う必要がありませんでしたが、レンタルサーバーの相性次第では、プラグインを利用する方法も選択肢にあがります。
わたしが検索した範囲では、 WP Original Media Path
というプラグインが、もっとも利用しやすそうでした。
2023年4月時点で、メンテナンスがきちんと行われていることも確認できました。
まとめ
WordPressをヘッドレス化する場合の、画像問題について紹介しました。
Jamstackなどを使って、画像をまるごとコピーするような力技もあるとは思います。
ですが、node.jsなどが動かない、普通のレンタルサーバーで作るなら、上記のような方法が簡単で良いのではないかと(今のところは)考えています。
ただし、この方法は、WordPressの仕様が変われば、変更しなければならないものです。
多少のリスクがある方法だということは、ご理解いただければと思います。