Make WordPress Core

Opened 10 years ago

Last modified 7 weeks ago

#35913 new defect (bug)

`is_()` conditional methods should share their logic

Reported by: boonebgorges's profile boonebgorges Owned by:
Milestone: 7.0 Priority: normal
Severity: normal Version:
Component: Query Keywords: has-patch 2nd-opinion needs-testing
Focuses: Cc:

Description

Many of the is_() methods in WP_Query share the nearly the exact same logic. As such, they share the exact same bugs, and fixing those bugs requires many parallel changes and huge numbers of tests. See #35902 and #24674 for some recent examples.

It's possible to move all the shared logic to a single protected utility method. It's a bit more abstract, but is much easier to maintain and test.

Attachments (2)

35913.diff (6.6 KB) - added by boonebgorges 10 years ago.
35913-is-conditional-shared-logic.diff (1.2 KB) - added by sachinrajcp123 5 months ago.

Download all attachments as: .zip

Change History (10)

@boonebgorges
10 years ago

#1 @boonebgorges
10 years ago

35913.diff demonstrates how it can be done. (Look at all that red! <3)

The one slight functional change from the current behavior, made to simplify the new is_object_type(), is that *all* $object properties are cast to strings before the in_array() checks, instead of just the numerical ones. This will be redundant, since all of these properties are already strings.

Anyone have thoughts about the wisdom, or lack thereof, of this kind of abstraction?

#2 @swissspidy
9 years ago

I like the red!

Would be nice to see things move forward here.

#3 @jorbin
6 months ago

  • Keywords needs-refresh added
  • Milestone changed from Future Release to 6.9

I like the red!

I concur!

This patch doesn't apply clean since WP_Query is now in a different file though. Would love to see if it's still possible for this duplicate code to be removed in 6.9.

This ticket was mentioned in PR #9161 on WordPress/wordpress-develop by @sukhendu2002.


6 months ago
#4

  • Keywords needs-refresh removed

#5 @sachinrajcp123
5 months ago

Refactor: Introduce shared helper for is_*() conditional methods to reduce code duplication in WP_Query

#6 @mindctrl
7 weeks ago

  • Keywords needs-testing added

I think this needs to be punted. The current PR hasn't been reviewed/tested.

This ticket was mentioned in Slack in #core-test by krupajnanda. View the logs.


7 weeks ago

#8 @jorbin
7 weeks ago

  • Milestone changed from 6.9 to 7.0

I agree, this ran out of time for 6.9. Moving to 7.0

Note: See TracTickets for help on using tickets.