如果用户已被删除,请删除用户的文件

时间:2014-01-16 06:25:52

标签: php wordpress

我想知道如何删除用户删除后上传的文件。

每当我删除用户时,它只会删除数据库中的数据。但我想删除文件系统中的文件。

  

注意:我正在使用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()。

2 个答案:

答案 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' );