Make WordPress Core

Ticket #16358: 16358.2.diff

File 16358.2.diff, 2.6 KB (added by ryan, 14 years ago)

delete_with_user flag. Props nacin

  • wp-includes/post.php

     
    2929                'hierarchical' => false,
    3030                'rewrite' => false,
    3131                'query_var' => false,
     32                'delete_with_user' => true,
    3233                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    3334        ) );
    3435
     
    4546                'hierarchical' => true,
    4647                'rewrite' => false,
    4748                'query_var' => false,
     49                'delete_with_user' => true,
    4850                'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'page-attributes', 'custom-fields', 'comments', 'revisions' ),
    4951        ) );
    5052
     
    6365                'rewrite' => false,
    6466                'query_var' => false,
    6567                'show_in_nav_menus' => false,
    66                 'supports' => array( 'comments' ),
     68                'delete_with_user' => true,
     69                'supports' => array( 'comments', 'author' ),
    6770        ) );
    6871
    6972        register_post_type( 'revision', array(
     
    8083                'rewrite' => false,
    8184                'query_var' => false,
    8285                'can_export' => false,
     86                'delete_with_user' => true,
     87                'supports' => array( 'author' ),
    8388        ) );
    8489
    8590        register_post_type( 'nav_menu_item', array(
     
    9196                '_builtin' => true, /* internal use only. don't use this when registering your own post type. */
    9297                'hierarchical' => false,
    9398                'rewrite' => false,
     99                'delete_with_user' => false,
    94100                'query_var' => false,
    95101        ) );
    96102
  • wp-admin/includes/user.php

     
    243243        do_action('delete_user', $id);
    244244
    245245        if ( 'novalue' === $reassign || null === $reassign ) {
    246                 $post_ids = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id) );
     246                $post_types_to_delete = array();
     247                foreach ( get_post_types( array(), 'objects' ) as $post_type ) {
     248                        if ( $post_type->delete_with_user ) {
     249                                $post_types_to_delete[] = $post_type->name;
     250                        } elseif ( null === $post_type->delete_with_user && post_type_supports( $post_type->name, 'author' ) ) {
     251                                $post_types_to_delete[] = $post_type->name;
     252                        }
     253                }
    247254
     255                $post_types_to_delete = apply_filters( 'post_types_to_delete_with_user', $post_types_to_delete, $id );
     256                $post_types_to_delete = implode( "', '", $post_types_to_delete );
     257                $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d AND post_type IN ('$post_types_to_delete')", $id ) );
    248258                if ( $post_ids ) {
    249259                        foreach ( $post_ids as $post_id )
    250                                 wp_delete_post($post_id);
     260                                wp_delete_post( $post_id, true);
    251261                }
    252262
    253263                // Clean links