WordPressでディスク容量をAPI経由で増やす
マルチサイト構成でネットワーク全体のサイトのアップロード容量を統一する方法
マルチサイト構成では、各ブログサイトのメディアライブラリに容量制限を設定することが可能。
方法はWordPressのネットワーク管理画面から以下のように設定を行う。
設定 → ネットワークの設定 → サイトのアップロード容量
へ進むと画像のような設定項目がある。
マルチサイトの標準状態では、チェックが外れているのでサイズ制限を行う場合は、画像のようにチェックボックスをオンにする。通常は1000MBなどに設定しておくと良いだろう。
メディアライブラリが上限に達しているとWordPressはどのように反応するのか
簡単にサイズの上限に達するようにo.1MBに制限をしてみた。
0.1MB → およぼ100KB相当に設定したことになる。
管理画面のダッシュボードには[保存スペース]という表示がガジェットで確認できる。0.1MBに制限すると画像のような状態になる。
表示については小数点以下は省略されて表示されているようだ。
この状態でメディアライブラリに100KB超の画像をアップロードしてみる。
HTTPエラーと表示されて、画像が100KBを超えているためと表示された。この制限はマルチサイト内のすべてブログに適用される。そのため、WordPressのマルチサイト機能を利用して無料ブログサービスを運営する際にディスク容量を制限するための機能として利用できる。
無料ブログサービスに無料プランから有償プランにアップグレードするためのオプションを提供する場合はどうすればよいか?
ディスク容量を自動的に設定するAPI
例えば、有償プランのディスク容量を10GBとした場合。wordpressのアクションに以下の処理を関連付ければ、該当するブログのみディスク容量を10GBに増加させることができる。
update_option('blog_upload_space', 10000);
blog_upload_spaceという設定値は、wp_optionsテーブルに格納されているが、wordpressネットワーク内の各ブログサイトのデータベーステーブルには、標準でblog_upload_spaceという設定値が備わっていることはない(wordpress3.8.1で確認)。
しかし、上のようにupdate_optionで設定を行えば、wp_optionsに設定が反映されグローバルに定義されたサイトのアップロード容量を変更することができる。容量を変更したブログサイトのダッシュボードを確認すると画像のような表示が確認できる。
blog_upload_spaceを利用すればブログサイト毎にアップロード制限を変更することが可能になる。そのため、wordpressのマルチサイト機能を利用してプラン構成に基づいたブログサービスを開発する際におぼえておきたいオプションになる。