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