コーディングブログ

Coding Blog

特定の投稿タイプのみメディアアップロードディレクトリを変更する

WordPress

通常のメディアアップロードディレクトリを変更する手法は、URL『/wp-admin/options.php』を叩いて設定したり、
『wp-config.php』で設定したり、プラグインを用いたりして変更が可能ですが、
今回は特定の投稿タイプのみメディアアップロードディレクトリを変更していきたいと思います。

functions.phpで調整する

通常は日付ディレクトリですが、下記ソースコードを追加すると、指定の投稿タイプでのアップロードで、
wp-content/uploads/【投稿タイプスラッグ1】/といったディレクトリにアップロードできます。

通常(日付ディレクトリ)調整後
wp-content/uploads/2019/09/wp-content/uploads/【投稿タイプスラッグ1】/
wp-content/uploads/【投稿タイプスラッグ2】/

ソースコード(functions.php)

条件分岐は、$_REQUEST['post_id']からid取得して、
get_post_type($id)で引数に取得したidを指定して投稿タイプを取得します。

そこからはディレクトリの調整です。
$uploadのキーを調整して、値を返します。

後はupload_dirに作った関数でフィルタリングしてあげればOKです。
upload_dir | Hook | WordPress Developer Resources

$uploadの値一覧
キー名意味値の例
pathアップロード先のフルパス名C:\Program Files (x86)\Apache Group\Apache2\htdocs\wp/wp-content/uploads/2011/04
urlアップロード先のURLhttp://localhost/wp/wp-content/uploads/2011/04
subdirベースディレクトリからのサブディレクトリ名/2011/04
basedirアップロード先ペースディレクトリのパス名C:\Program Files (x86)\Apache Group\Apache2\htdocs\wp/wp-content/uploads
baseurlアップロード先ペースディレクトリのURLhttp://localhost/wp/wp-content/uploads
errorエラーfalse

上記テーブルは下記サイトを引用致しました。
wp_upload_dir – WordPress私的マニュアル