Юрий, спасибо за наводку. Воспользовался вашей идеей.
Может кому пригодится. Также добавил транслит для имени пользователя на всякий случай 🙂 …ну и подправил версию :-))
<?php
/*
Plugin Name: user_upload
Plugin URI:
Description: Any user uploads files into his own directory
Version: 1.0
Author: Yuri 'Bela' Belotitski
Author URI: http://www.portal.kharkov.ua/
*/
$gost = array(
"Є"=>"EH","І"=>"I","і"=>"i","№"=>"#","є"=>"eh",
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
"Е"=>"E","Ё"=>"JO","Ж"=>"ZH",
"З"=>"Z","И"=>"I","Й"=>"JJ","К"=>"K","Л"=>"L",
"М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
"С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
"Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
"Ы"=>"Y","Ь"=>"","Э"=>"EH","Ю"=>"YU","Я"=>"YA",
"а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
"е"=>"e","ё"=>"jo","ж"=>"zh",
"з"=>"z","и"=>"i","й"=>"jj","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
"ы"=>"y","ь"=>"","э"=>"eh","ю"=>"yu","я"=>"ya","«"=>"","»"=>"","—"=>"-"
);
function uu_cd($uploads) {
global $userdata, $gost;
$userdir .= strtr($userdata->user_login, $gost);
$uploads['path'].='/'.$userdir;
$uploads['url'].='/'.$userdir;
wp_mkdir_p($uploads['path']);
return $uploads;
}
function uu_restrict($where) {
global $userdata;
if ((strstr($_SERVER['REQUEST_URI'],'/wp-admin/media-upload.php')
|| strstr($_SERVER['REQUEST_URI'],'/wp-admin/upload.php') )
&& !strstr($where,'ID =')
&& !current_user_can('level_5')) $where .= ' AND post_author = '.$userdata->ID;
return $where;
}
add_filter('upload_dir','uu_cd');
add_filter('posts_where_paged','uu_restrict');
?>
Плагин создает папку с именем пользователя (в латинице).
P. S. Осталась еще одна задача, но это для другой темы (разрешить авторизованным пользователям публикацию записей в определенную категорию).