Make WordPress Core

Opened 5 years ago

Last modified 5 days ago

#20899 reviewing defect (bug)

is_home() should be able to be true when is_feed()

Reported by: nacin Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version:
Component: Query Keywords: has-patch needs-testing has-unit-tests dev-feedback
Focuses: Cc:


is_feed() is a special query flag that can be combined with other query flags — for example, is_author() && is_feed() for /author/admin/feed/.

But it can't be combined with is_home(), because is_home() is the fallback that is only set to true when a lot of other things are true — including is_feed(). This appears to be incorrect — is_home() should still be able to be true despite is_feed().

I tracked this down to [1449]. What kind of breakage could occur with this?

Attachments (4)

20899.diff (826 bytes) - added by stevenkword 2 years ago.
20899.2.diff (1.4 KB) - added by jubstuff 12 months ago.
20899.3.diff (4.3 KB) - added by swissspidy 5 months ago.
20899.4.diff (6.9 KB) - added by stevenkword 5 days ago.

Download all attachments as: .zip

Change History (29)

#1 @johnbillion
5 years ago

  • Cc johnbillion added

#2 @batmoo
5 years ago

  • Cc batmoo@… added

#3 @ocean90
4 years ago

#22031 was marked as a duplicate.

#5 @wonderboymusic
4 years ago

  • Keywords needs-patch reporter-feedback added; has-patch removed

How this make you feel now - still needed?

#6 @stevenkword
2 years ago

  • Keywords has-patch needs-testing added; needs-patch removed

Patch 20899.diff removes the is_feed check when assigning the value for the is_home query argument.

2 years ago

#8 @stevenkword
19 months ago

Anyone have an argument against this?

#9 @johnbillion
17 months ago

  • Owner set to johnbillion
  • Status changed from new to reviewing

#10 @stevenkword
14 months ago

  • Milestone changed from Future Release to 4.5

This ticket was mentioned in Slack in #core by chriscct7. View the logs.

14 months ago

#12 @johnbillion
14 months ago

  • Keywords needs-unit-tests added; reporter-feedback removed

12 months ago

#13 @jubstuff
12 months ago

The patch was not applying correctly anymore.

I refreshed it and added a unit test, even if I'm not sure about its location.

#14 @johnbillion
12 months ago

  • Keywords has-unit-tests 4.6-early added; needs-unit-tests removed
  • Milestone changed from 4.5 to Future Release

This smells like something that needs to go in earlier in the cycle, so we have more time to discover hard-to-spot bugs.

@jubstuff FYI, $this->assertQueryTrue() can be used for asserting conditional functions.

#15 @swissspidy
6 months ago

  • Keywords 4.6-early removed
  • Milestone changed from Future Release to 4.7

What about getting this into 4.7? I'll try to update the patch next week.

#16 @swissspidy
6 months ago

Feedback from @danielbachhuber:

I think this is going to break things
I've used is_home() a fair number of times to conditionally modify the main query where changing core's behavior would cause unintended behavior in the main feed

Source: https://wordpress.slack.com/archives/core/p1472220220006226

#17 @johnbillion
6 months ago

  • Owner johnbillion deleted

#18 @jorbin
6 months ago

@swissspidy if this is something you want to try, I think it needs to happen soon.

5 months ago

#19 @swissspidy
5 months ago

Regarding my previous comment, Daniel did not exaggerate.

20899.3.diff makes the patch apply cleanly against trunk again. As you can see from the changed tests, this affects a few queries.

So if anyone's simply checking for is_home() to modify the query or something, they would likely need to add an && is_feed() check to it. But we don't know without more testing, right?

Is anyone not comfortable with testing this in trunk to see how this affects things?

#20 @swissspidy
5 months ago

  • Keywords dev-feedback added

This ticket was mentioned in Slack in #core by jeffpaul. View the logs.

5 months ago

#22 @swissspidy
5 months ago

  • Milestone changed from 4.7 to Future Release

Punting as per discussion in yesterday's bug scrub.

#23 @stevenkword
3 months ago

Another possible solution would be to add a new set of keys to WP_Query. e.g.) is_home_feed, is_author_feed, is_archive_feed, etc.

#24 @stevenkword
3 months ago

I'm starting to think that is an even better idea than I did yesterday. See #39157

#25 @stevenkword
5 days ago

20899.4.diff builds upon a patch created in #39157 as an attempt to solve this problem by adding two new getter methods and modifying the wp_query conditionals. This allows for the ability to distinguish between a home page and a home feed as well as between a custom feed and a regular feed. This solution should protect against the regression mentioned by @danielbachhuber and @swissspidy above. Unit test pass as of 4.7.2.

5 days ago

Note: See TracTickets for help on using tickets.