[wp-trac] [WordPress Trac] #55239: Filter hook wp_sitemaps_taxonomies_entry passes Term ID not Object

WordPress Trac noreply at wordpress.org
Wed Feb 23 15:02:44 UTC 2022


#55239: Filter hook wp_sitemaps_taxonomies_entry passes Term ID not Object
--------------------------+-----------------------------
 Reporter:  RavanH        |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  Sitemaps      |    Version:  5.9.1
 Severity:  minor         |   Keywords:
  Focuses:                |
--------------------------+-----------------------------
 The filter hook `wp_sitemaps_taxonomies_entry` in wp-
 includes/sitemaps/providers/class-wp-sitemaps-taxonomies.php line 125
 `$term` parameter is announced as being a `WP_Term` object but it is
 actually the term ID. This is caused by the default query argument
 `fields=ids`.

 I worked around it by adding the filter:
 {{{
 add_filter( 'wp_sitemaps_taxonomies_query_args', function($args) {
 $args['fields'] = 'all'; return $args; } );
 }}}

 To fix this, I'd suggest ''either'' forcing the fields argument to "all"
 by adding
 {{{
 $args['fields'] = 'all';
 }}}
 before the WP_Term_Query on line 102 ''or'' changing the filter hook
 `@param WP_Term $term Term object.` description to reflect that `$term`
 can be different things depening on what is passed into the term query
 fields argument.

 My preference would be the first suggestion, as that would generate the
 most predictable behavior and most usefull data passed through the filter.
 But then again, it might break plugins that are currently using the filter
 and expecting an ID...

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


More information about the wp-trac mailing list