行政書士事務所
ホーム>記事一覧 > WordPressで画像管理

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の仕様が変われば、変更しなければならないものです。
多少のリスクがある方法だということは、ご理解いただければと思います。