WordPress.org

Make WordPress Core

Ticket #10122: 10122.diff

File 10122.diff, 1.8 KB (added by prettyboymp, 5 years ago)

Clear hiearchical terms fix

  • wp-includes/post.php

     
    22962296        // Escape data pulled from DB. 
    22972297        $post = add_magic_quotes($post); 
    22982298 
    2299         // Passed post category list overwrites existing category list if not empty. 
    2300         if ( isset($postarr['post_category']) && is_array($postarr['post_category']) 
    2301                          && 0 != count($postarr['post_category']) ) 
     2299        // Passed post category list overwrites existing category list if is set array. 
     2300        if ( isset($postarr['post_category']) && is_array($postarr['post_category']) ) 
    23022301                $post_cats = $postarr['post_category']; 
    23032302        else 
    23042303                $post_cats = $post['post_category']; 
  • wp-admin/includes/post.php

     
    174174                                break; 
    175175                } 
    176176        } 
     177         
     178        //taxonomy stuff 
     179        $taxonomies = get_object_taxonomies( $post_data ); 
     180        foreach ( $taxonomies as $taxonomy_name ) { 
     181                $taxonomy_obj = get_taxonomy( $taxonomy_name ); 
     182                if ( current_user_can( $taxonomy_obj->assign_cap ) ) { 
     183                        if ( $taxonomy_obj->hierarchical && $taxonomy_obj->show_ui ) { 
     184                                if ( $taxonomy_name == 'category' ) { 
     185                                        if ( !isset( $post_data['post_category'] ) ) 
     186                                                $post_data['post_category'] = array();  //no terms selected, set an empty set 
     187                                } 
     188                                elseif ( !isset( $post_data['tax_input'][$taxonomy_name] )) 
     189                                        $post_data['tax_input'][$taxonomy_name] = array(); //no terms selected, set an empty set 
     190                        } 
     191                } 
     192                elseif ( isset( $post_data['tax_input'][$taxonomy_name] ) ) 
     193                        unset( $post_data['tax_input'][$taxonomy_name] ); //user can't assign to this taxonomy, clear it 
     194        } 
    177195 
    178196        // Meta Stuff 
    179197        if ( isset($post_data['meta']) && $post_data['meta'] ) {