delete post also attachments

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

    }

Leave a Comment