[wp-trac] [WordPress Trac] #36379: Saving post can remove its hierarchical terms if user cannot 'assign_terms'

WordPress Trac noreply at wordpress.org
Wed Mar 30 22:41:12 UTC 2016

#36379: Saving post can remove its hierarchical terms if user cannot 'assign_terms'
 Reporter:  dlh             |      Owner:
     Type:  defect (bug)    |     Status:  new
 Priority:  normal          |  Milestone:  Awaiting Review
Component:  Administration  |    Version:
 Severity:  normal          |   Keywords:
  Focuses:  administration  |
 If a user lacks the `assign_terms` capability for a hierarchical taxonomy,
 and the user visits the edit-post screen or uses Quick Edit, the default
 UI still displays the checklist of terms for that taxonomy but with each
 input disabled.

 However, disabled checkboxes are not submitted with forms. If terms in the
 taxonomy are selected for the post and the user saves it, `0` is submitted
 instead of those terms, and the relationships are lost.

 To replicate:

 1. Create a post as an administrator, assign it categories, and save.

 2. Remove your ability to assign terms:

 add_filter( 'register_taxonomy_args', function ( $args ) {
         $args['capabilities']['assign_terms'] = 'do_not_allow';
         return $args;
 } );

 3. Go to the edit-post screen for your post. The category checklist
 appears with your saved terms still checked, but the inputs are disabled.

 4. Save the post. Now, only the default category is assigned.

 The attached patch is the start of one potential solution: Outputting
 hidden fields in `Walker_Category_Checklist::start_el()` to match
 disabled, checked ones. Something similar would have to happen for Quick

 But there are other approaches, and I might be misdiagnosing the issue, so
 I thought I would wait for more discussion before attempting to patch

Ticket URL: <https://core.trac.wordpress.org/ticket/36379>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list