it-swarm.com.de

post auch Anhänge löschen

Ich versuche, einen Beitrag mit allen Anhängen zu löschen. Das ist die Funktion, die ich mir gerade ausgedacht habe.

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;
        }

Dies löscht den Beitrag, aber nicht den Anhang, der mit diesem Beitrag verknüpft ist. Es ist auch nicht schwer zu löschen, der Beitrag verbleibt im Papierkorb. Also was denkst du? Vielen Dank.

4
boranb

Vielleicht funktioniert das ja

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;
}

Der Code hinzugefügt

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

    }
6
Andres Yanez

Im Codex finden Sie Informationen zur korrekten Verwendung von wp_delete_post , use

wp_delete_post( $_POST['id'], true );

den Müll umgehen

0
keatch