2012-01-23 51 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