delete post also attachments

I am trying to delete a post with its all attachments. This is the function that i came up with right now;

function remove_post(){
            if(isset($_POST['post_id']) && is_numeric($_POST['post_id'])){
                $post = get_post($_POST['post_id']);
                if(get_current_user_id() == $post->post_author){ echo 'ee';
                    wp_delete_post($_POST['post_id']);
                }
            }  

            exit;
        }

This deletes the post but not the attachments link to that post also its not hard deleting, the post remains in the trash. So what do you think? Thanks.

Related posts

Leave a Reply

2 comments

  1. Maybe this works

    function remove_post() {
    
                if(isset($_POST['post_id']) && is_numeric($_POST['post_id'])) {
    
                    $post = get_post($_POST['post_id']);
    
                    if(get_current_user_id() == $post->post_author) { 
    
    
                         $args = array(
                                 'post_parent' => $_POST['post_id']
                     );
    
                     $post_attachments = get_children($args);
    
                         if($post_attachments) {
    
                                foreach ($post_attachments as $attachment) {
    
                                          wp_delete_attachment($attachment->ID, true);
    
                                }
    
                         }
    
                              wp_delete_post($_POST['post_id'], true);
    
                    }
    
                }  
    
                exit;
    }
    

    The code added

    function get_attachment_id_from_src ($image_src) {
      global $wpdb;
    
      $query = "SELECT ID FROM {$wpdb->posts} WHERE guid='$image_src'";
      $id = $wpdb->get_var($query);
    
      return $id;
    
    }
    
    if(!empty($_POST['avatar_id'])  && $_POST['avatar_id'] != get_user_meta($current_user->id, 'custom_avatar', true) && empty( $_POST['remove_avatar'])) {
    
            update_user_meta($current_user->id, 'custom_avatar', esc_attr( $_POST['avatar_id']));
    
        } elseif(!empty( $_POST['remove_avatar']) && $_POST['remove_avatar'] == 1) {
    
                    $avatar_url = get_user_meta($current_user->id, 'custom_avatar', true);
    
                    $attachment_delete = get_attachment_id_from_src($avatar_url);
    
                    wp_delete_attachment($attachment_delete, true);
    
            update_user_meta( $current_user->id, 'custom_avatar', '-1');
    
        }