symlinkとupload_pathを利用してwordpressで画像を柔軟に管理

wordpressをwebサービスとして利用するには柔軟な画像管理が必要

upload_pathはoptions apiで設定できる

wordpressの画像格納先はシングルサイトでもマルチサイト構成でも標準で同じ

wp-content\uploads

にアップロードされる。

このパスを変更するには、以下のようにwpmu_new_blogアクションで実行すればアップロード先をカスタマイズ可能。

update_option('upload_path', 'media/file1');
update_option('upload_url_path', '/media/file1');

上のように設定することで、

/media/file1/sites/4/2013/12/icon_.png

というURLに画像がアップロードされ、かつ参照することができるようになる。

退会したユーザーの画像管理

マルチサイト環境下のwordpressでは、サイト単位で画像管理を行うようにサイト毎にディレクトリ分けが設定された状態でブログサイトのセットアップがなされる。

/media/file1/sites/4/2013/12/icon_.png

上のURLの「4」という階層がマルチサイト内のサイトIDを表しており、4番のサイトの画像はすべてその配下にアップロードされる。そのため、ユーザーが退会した場合には、4のフォルダを他の場所に移動するなどして無理なく対応することが可能。

uploads_use_yearmonth_foldersで0を設定すればフラットな画像管理が可能

標準設定では、画像をアップロードするとフォルダ内が年月のフォルダで階層化される。この階層化を無効としてフラットに画像ファイルなどを管理するには以下のように設定する。

update_option('uploads_use_yearmonth_folders', 0);

個人的には年月のフォルダで階層化するのがおすすめかなと思う。月が替われば同じファイル名の画像を設定できるようになる。

symlinkでフレキシブルに画像を管理

symlinkとはシンボリックリンクのことでUnixOSでは一般的に認知された機能だが、windows環境でもvistaのころから利用できるようになった。windowsでいうショートカットファイルを作成するイメージに近い。symlinkを作成してファイル本体を、

  • 異なる階層
  • 別のファイルシステム

に保存しておくことができる。

/media/file1/sites/4/2013/12/icon_.png

というパスのfile1をsymlink化しておくことでより柔軟な画像管理が可能となる。file1をシンボリックリンクとして画像本体を全く異なる階層やファイルシステムで管理するには以下のようにコマンドプロンプトからsymlinkを設定する。

C:\xampp\htdocs\vhost\wordpress3.8ja\media>mklink /d file1 c:\media
file1 <<===>> c:\media のシンボリック リンクが作成されました

上の設定は、画像の実体が保存されている

C:\media

file1

というシンボリックリンクを設定している。ファイルの実体は、

C:\media\sites\4\2013\12\icon_.png

に存在するが、

/media/file1/sites/4/2013/12/icon_.png

というURLで画像を参照することができる。

file1ではなくfile2というsymlinkを作成すれば

D:\media

という異なるドライブでファイル本体を管理することができるようになる。

おぼえておきたい運用テクニックである。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

symlinkとupload_pathを利用してwordpressで画像を柔軟に管理の記事にコメントを投稿

カスタマイズ