如何在移动内容目录后设置每个用户的自定义上传目录

时间:2015-01-23 作者:mcnesium

我设置了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 并将用户名部分留空。那么我怎样才能做到这一点呢?有什么想法吗?

3 个回复
最合适的回答,由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网友:Shohag Malik

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\');
这对我有用。。。但是否可以为所有用户创建另一个子文件夹,如uploads/users/?我想将所有用户的内容保存到upload目录下的users文件夹中

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\');

结束

相关推荐

Unable to create directory

最近我注意到,在我将网站上传到另一台服务器后,我似乎遇到了某种上传问题一旦我使用FTP将网站复制并移动到新主机上,我就无法通过wp-admin 因为我得到:无法创建目录。),我无法在帖子或页面上上传媒体,因为我得到:无法创建目录wp-content/uploads/2014/08其父目录是否可由服务器写入?我还注意到wp-admin/theme-editor.php 有一条消息说:“保存更改之前,需要将此文件设置为可写。有关详细信息,请参阅Codex。”我的开发托管服务器上的站点版本上没有此消息,我也没有