2012-01-23 47 views
1

我使用Uploadify与Uploadify Integration Wordpress plugin,所有上传的文件转到:wp-content/uploads/year/month/。我怎样才能破解/改进插件,使文件可以存储在一个名为登录用户的路径中,以便我可以区分谁已经上传了他们?黑客与Wordpress插件Uploadify集成

或者也可以动态地添加一个用户名登录用户的前缀?

我读the discussion from this link并根据WordPress的抄本我能得到WordPress的用户名使用此功能:

<?php global $current_user; 
     get_currentuserinfo(); 

     echo 'Username: ' . $current_user->user_login ?> 

但我不知道如何修改插件和实施。

当然,我已经联系了插件的作者,但仍然没有答复。

回答

0

我没有测试过这一点,但它可能让你很远:

function user_upload_path($path = null) { 

    global $current_user; 
    get_currentuserinfo(); 

    $user_path = sanitize_file_name($current_user->user_login); 

    return sprintf('%s/uploads/%s', WP_CONTENT_DIR, $user_path); 

} 
add_filter('pre_option_upload_path', 'user_upload_path'); 

function user_upload_url_path($path = null) { 

    global $current_user; 
    get_currentuserinfo(); 

    $user_path = sanitize_file_name($current_user->user_login); 

    return sprintf('%s/uploads/%s', WP_CONTENT_URL, $user_path); 

} 
add_filter('pre_option_upload_url_path', 'user_upload_url_path'); 

我解决了这个通过添加过滤器,以pre_option_upload_pathpre_option_upload_url_path因此在路径和网址的末尾添加的用户名。

到目前为止我还没有尝试上传。我确认wp_content_url()将返回包含用户名的路径和网址。我决定在用户​​名前加上用户名,因为这是最容易完成的事情,但我可以用user_upload_dir筛选器和一些正则表达式来完成相反的操作。

+0

决定尝试上传,而且似乎工作正常。另外,为了避免WordPress或其他插件重写值,我使用了'pre_option_%s'过滤器。如果您实际上喜欢一些可定制的功能,请改用'option_%s'等价物。 – Simon

+0

每次上传文件时,您可能还想'update_post_meta'并存储执行上载的用户的用户名。当我的上传完成时,被正确存储并且可以插入到帖子中,如果另一用户在管理面板中查看它,则文件url将是错误的,例如,媒体部分。也许你可以使用不同的过滤器来上传和查看文件。 – Simon