WordPress.org

Make WordPress Core

Ticket #13153: 13153.patch

File 13153.patch, 1.6 KB (added by prettyboymp, 8 years ago)
  • wp-admin/includes/post.php

     
    309309                }
    310310
    311311                $tax_names = get_object_taxonomies( get_post($post_ID) );
    312 
    313312                if ( isset($new_cats) && in_array( 'category', $tax_names ) ) {
    314313                        $cats = (array) wp_get_post_categories($post_ID);
    315314                        $post_data['post_category'] = array_unique( array_merge($cats, $new_cats) );
    316315                }
    317316
    318317                foreach ( $tax_names as $tax_name ) {
    319                         if( isset( $tax_input[$tax_name])  ) {
    320                                 if ( is_taxonomy_hierarchical( $tax_name ) )
    321                                         $terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'ids') );
    322                                 else
    323                                         $terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'names') );
    324                                 $post_data['tax_input'][$tax_name] = array_merge( $terms, $tax_input[$tax_name] );
    325                         }
     318                        $taxonomy_obj = get_taxonomy($tax_name);
     319                        if(  isset( $tax_input[$tax_name]) && current_user_can( $taxonomy_obj->assign_cap ) )
     320                                $new_terms = $tax_input[$tax_name];
     321                        else
     322                                $new_terms = array();
     323                               
     324                        if ( $taxonomy_obj->hierarchical )
     325                                $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'ids') );
     326                        else
     327                                $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'names') );
     328
     329                        $post_data['tax_input'][$tax_name] = array_merge( $current_terms, $new_terms );
    326330                }
    327331
    328332                $post_data['ID'] = $post_ID;
     
    16041608/* ]]> */
    16051609</script>
    16061610<?php
    1607 }
     1611}
     1612 No newline at end of file