Как настроить пользовательский каталог загрузки для каждого пользователя после перемещения каталога содержимого


Я установил содержимое и каталог 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 и оставить часть имени пользователя пустой. Так как же я могу этого добиться? Есть какие-нибудь идеи?

Author: mcnesium, 2015-01-23

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');
 5
Author: mcnesium, 2018-11-09 14:47:47
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');

Это сработало для меня... но возможно ли создать еще одну подпапку для всех пользователей, например, для загрузок/пользователей/? я хочу сохранить все содержимое пользователей в папке "Пользователи" в каталоге загрузки

 0
Author: Shohag Malik, 2019-01-14 21:22:57