Как настроить пользовательский каталог загрузки для каждого пользователя после перемещения каталога содержимого
Я установил содержимое и каталог wordpress wordpress, как описано в кодексе:
define('WP_SITEURL', 'https://' . $_SERVER['SERVER_NAME'] . '/wordpress');
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
Теперь я хочу установить отдельный каталог загрузки для каждого пользователя, например:
wpinstance.org/content/uploads/user-name/here-goes-the-file.jpg
Я уже много раз пробовал использовать
define( 'UPLOADS', dirname(__FILE__) . '/content/uploads'.$current_user->user_name.'/');
, а также множество комбинаций без dirname()
и так далее. Все это оказалось для того, чтобы поднять файлы до wordpress/…something
и оставить часть имени пользователя пустой. Так как же я могу этого добиться? Есть какие-нибудь идеи?
2 answers
С титрами петермолнар через irc://freenode.net/wordpress
Я сам могу ответить на свой вопрос. Ключ состоит в том, чтобы установить фильтр upload-dir
в теме functions.php
:
function per_user_upload_dir( $original ){
// use the original array for initial setup
$modified = $original;
// set our own replacements
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$subdir = $current_user->user_login;
$modified['subdir'] = $subdir;
$modified['url'] = $original['baseurl'] . '/' . $subdir;
$modified['path'] = $original['basedir'] . DIRECTORY_SEPARATOR . $subdir;
}
return $modified;
}
add_filter( 'upload_dir', 'per_user_upload_dir');
function per_user_upload_dir( $original ){
// use the original array for initial setup
$modified = $original;
// set our own replacements
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
$subdir = $current_user->user_login;
$modified['subdir'] = $subdir;
$modified['url'] = $original['baseurl'] . '/' . $subdir;
$modified['path'] = $original['basedir'] . DIRECTORY_SEPARATOR . $subdir;
}
return $modified;
}
add_filter( 'upload_dir', 'per_user_upload_dir');
Это сработало для меня... но возможно ли создать еще одну подпапку для всех пользователей, например, для загрузок/пользователей/? я хочу сохранить все содержимое пользователей в папке "Пользователи" в каталоге загрузки