- 実践 WordPress ホーム
- メディア管理
WordPress のメディアファイルのサブフォルダ分けの設定
WordPress のメディアファイルのサブフォルダ分けの設定方法について説明します。
WordPress ではメディアファイルの保存先ディレクトリのルールを管理画面やコードで変更することができます。
確認時のバージョン
- WordPress
6.6.1
管理画面での設定
管理画面上からサブフォルダ分けを行うかどうかを設定できます。 利用できる選択肢は、サブフォルダ分けを年月のフォルダを使って行うか、まったく行わないかの 2 つです。
設定の変更方法は次のとおりです。
サイドメニューの「設定」→「メディア」をクリックします。
メディア設定ページが開くので、「ファイルアップロード」の「アップロードしたファイルを年月ベースのフォルダーに整理」のチェックボックスのチェックをセットして「変更を保存」ボタンをクリックします。
例えば、ファイルのアップロード日が 2028 年 5 月でファイル名が sample.webp
の場合、チェックを入れたときと外したときの保存先は次のとおりになります。
チェック | 保存先 |
---|---|
チェックを入れる | wp-content/uploads/2028/05/sample.webp |
チェックを外す | wp-content/uploads/sample.webp |
デフォルトではチェックが入った状態になっています。
Note
アップロードされたファイルと同名のファイルが同じフォルダにすでに存在する場合、 WordPress は後からアップロードされたファイルのファイル名の末尾に -1
-2
といった数字を自動的に追加してファイル名の衝突を回避します。
この自動で行われるファイル名変更をなるべく避けたいなら、チェックを入れてサブフォルダ分けを行った方がよいです。
コードを使った設定
コードを書く選択肢があるなら、コードを書くとより細かいカスタマイズが可能です。
具体的には upload_dir
というフィルタフックを使用してアップロード先・サブフォルダの設定が変更できます。
例えば次のように書くと、アップロードファイルの保存先をユーザーごとに異なるフォルダに整理できます。
functions.php
:
add_filter( 'upload_dir', 'themeslug_upload_dir' );
/**
* メディアファイルをユーザーごとに別のフォルダに分類する
*/
function themeslug_upload_dir( $uploads ) {
// 未ログインユーザーの場合は anonymous にフォールバック:
$user_id = get_current_user_id() ?: 'anonymous';
$subdir = "/users/${user_id}" . $uploads['subdir'];
$uploads['path'] = $uploads['basedir'] . $subdir;
$uploads['url'] = $uploads['baseurl'] . $subdir;
return $uploads;
}
例えばユーザーの ID が 5 でファイル名が sample.webp
で、なおかつ「アップロードしたファイルを年月ベースのフォルダーに整理」のチェックボックスにチェックが入っている場合、ファイルの保存先は次のようになります。
Note
これらの方法でアップロード先のサブフォルダを変更した場合、すでにアップロードされているファイルには影響せず、設定変更後にアップロードされたファイルにのみ影響します。
既存のファイルを移動したい場合はその機能を提供するプラグインを使用するか、手作業でファイルの移動とデータベースの値の書き換えを行う必要があります。