Make WordPress Core

Opened 3 months ago

#59354 new defect (bug)

Unnecessary queries performed when updating a post without providing categories or tags

Reported by: johnbillion's profile johnbillion Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version:
Component: Posts, Post Types Keywords: needs-patch needs-unit-tests
Focuses: performance Cc:

Description

Given an existing post with at least some categories or tags present, updating the post via wp_update_post() (which calls wp_insert_post()) with data that does not include categories or tags, many unnecessary taxonomy-related database queries are performed. This slows down the saving significantly.

  • If $postarr doesn't contain a post_category element, there's no point in calling wp_set_post_categories().
  • If $postarr doesn't contain a tags_input element, there's no point in calling wp_set_post_tags()

Todo

  • Need tests to verify the above is correct
  • Need a list of queries that are performed before and after the change

To reproduce

  1. Publish a post with at least one category
  2. Update the post via:
    <?php
    wp_insert_post( [
      'ID' => $id,
      'post_content' => 'Hello, World!',
    ] );
    
  3. Observe that a significant number of unnecessary taxonomy queries are performed

Change History (0)

Note: See TracTickets for help on using tickets.