我想知道如何删除用户删除后上传的文件。
每当我删除用户时,它只会删除数据库中的数据。但我想删除文件系统中的文件。
注意:我正在使用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 / uploads / user / Array < - 输出
适用于rmdir()
和unlink
。但由于这个原因,它无法找到我想要删除的路径。
我在研究中发现我需要在函数触发之前移动global $wpdb
。但它返回一个错误......
在非对象上调用成员函数get_results()。
答案 0 :(得分: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 强>
答案 1 :(得分: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' );