2014-01-16 99 views
0

我想知道如何刪除用戶在刪除後上傳的文件。如果用戶已被刪除,請刪除用戶的文件

每當我刪除一個用戶,它只會刪除數據庫上的數據。但我想要的是也刪除文件系統中的文件。

注意:我正在使用Wordpress。 rmdir()和unlink()不起作用。

請幫忙!我嘗試了谷歌搜索,但沒有。

更新:感謝pr1nc3的功能。

但它還沒有完成。

add_action('delete_user', 'delete_user_dir'); 
function delete_user_dir($user_id) { 
global $wpdb; 

$files = 'wp-content/uploads/user/'; 
$deluser = $wpdb->get_results("SELECT user_login FROM " .$wpdb->user ." WHERE ID=".$user_id); 
} 

的wp-content /上傳/用戶/陣列 < - 輸出

rmdir()unlink它的工作原理。但是由於這個原因,它找不到我想要刪除的路徑。

我發現在我的研究中,我需要在函數觸發前移動global $wpdb。但它返回一個錯誤... 調用一個非對象上的成員函數get_results()。

+1

'rmdir()和unlink()不工作。「,但爲什麼? – xdazz

+0

檢查文件和文件夾權限.. –

+0

是否有用戶的任何文件留在媒體庫中? http://en.support.wordpress.com/media/deleting-files/ –

回答

0

我知道了!謝謝你們的幫助。 :)

function delete_user_dir($user_id) { 

global $wpdb; 
$url = home_url('/'); 
$folder = 'wp-content/uploads/user/'; 
$deluser = get_userdata($user_id); 

$files = glob($url. $folder . $deluser->user_login .'/*'); 

if(is_array($files)){ 
    foreach($files as $file){ 
     if(is_file($file)) 
     unlink($file); 
    }; 

    rmdir($url. $folder . $deluser->user_login .'/'); 

}else{ 
    rmdir($url. $folder . $deluser->user_login .'/*'); 
} 
} 

add_action('delete_user', 'delete_user_dir'); 
1

此功能將運行每次當用戶被刪除

$user_id是,刪除用戶的ID

function my_delete_user($user_id) { 
    --> Get All posts created by $user_id 
    --> Loop All posts to get attachments for each posts 
    --> Finally delete each attachment using wp_delete_attachment 

    } 

add_action('delete_user', 'my_delete_user'); 

這裏指的 Delete Attachment