我设置了wordpress的内容和wordpress目录,如所述in the codex:
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
并将用户名部分留空。那么我怎样才能做到这一点呢?有什么想法吗?
最合适的回答,由SO网友:mcnesium 整理而成
学分为petermolnar 通过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\');
SO网友:Twinpictures Info
很好的解决方案。如果许多用户正在上载,则上载文件夹可能会变得有点混乱。简单的解决方法是更改:
$subdir = $current_user->user_login;
至
$subdir = \'user_docs/\'.$current_user->user_login;
下面修改的示例也仅针对特定角色(讲师)执行此操作
function per_user_upload_dir( $original ){
$modified = $original;
if ( is_user_logged_in() && current_user_can(\'instructor\') ) {
$current_user = wp_get_current_user();
$subdir = \'user_docs/\'.$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\');