Make WordPress Core

Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#39211 closed defect (bug) (fixed)

is_page_template could return true on terms

Reported by: natereist's profile natereist Owned by: johnbillion's profile johnbillion
Milestone: 4.7.1 Priority: normal
Severity: normal Version: 4.7
Component: Posts, Post Types Keywords: has-patch has-unit-tests fixed-major
Focuses: template Cc:

Description

Since this function no longer checks is_page(), the ID from get_queried_object_id will always be used to check the post template slug - this ID is not guaranteed to be a post ID. If that ID matches a Post ID with that page template it will return true even though that template is not being loaded. If that ID matches with any Post ID that does not have page template set it will most likely return true is_page_template() with no argument.

Attachments (4)

39211.patch (489 bytes) - added by natereist 8 years ago.
Added an is_singular check to the file.
39211.2.patch (2.5 KB) - added by dlh 8 years ago.
39211.diff (1.8 KB) - added by dlh 8 years ago.
39211.3.patch (1.8 KB) - added by dlh 8 years ago.

Download all attachments as: .zip

Change History (18)

#1 follow-up: @johnbillion
8 years ago

  • Component changed from General to Posts, Post Types
  • Keywords needs-patch needs-unit-tests added
  • Milestone changed from Awaiting Review to 4.7.1

Introduced in [38951].

The is_page() check should have been replaced with an is_singular() check.

@natereist
8 years ago

Added an is_singular check to the file.

#2 @natereist
8 years ago

  • Keywords has-patch added; needs-patch removed

First try at a patch, if I need to do anything differently let me know.

#3 in reply to: ↑ 1 @swissspidy
8 years ago

  • Owner set to swissspidy
  • Status changed from new to assigned

The is_page() check should have been replaced with an is_singular() check.

Ditto.

@natereist Thanks! I'd add braces according to our coding standards, but otherwise that's correct.

I'll try to add some unit tests if nobody else gets to it.

#4 @dlh
8 years ago

@swissspidy I can work on tests if you haven't started.

#5 @swissspidy
8 years ago

@dlh Not yet, so feel free :-) Thanks in advance!

@dlh
8 years ago

#6 @dlh
8 years ago

39211.2.patch includes a test that creates an ID shared between a term and a post assigned a template, and checks is_page_template() after visiting the term.

I also included a related change to Tests_Query_Conditionals and Tests_Query_VerbosePageRules. Their setUp() methods currently call set_permalink_structure() before create_initial_taxonomies(), such that the initial taxonomies won't have added their permastructs before the first test runs. The patch would flip the order of those calls.

You should be able to see the effect of the current order by running just test_is_page_template_not_singular() without applying the change to the two setUp() methods. At least for me, go_to( get_term_link() ) fails during Tests_Query_Conditionals, so the assertInstanceOf() also fails. Everything passes the second time through with Tests_Query_VerbosePageRules.

If the change to setUp() isn't going to work, then I can find another approach for the new test.

#7 @swissspidy
8 years ago

  • Keywords has-unit-tests added; needs-unit-tests removed

Tests behave as described/intended. Thanks!

#8 @johnbillion
8 years ago

  • Keywords needs-testing added

See [38654] (and the related links on its ticket) for the reason the permastructure is set before the initial taxonomies are re-registered.

@dlh
8 years ago

@dlh
8 years ago

#9 @dlh
8 years ago

39211.3.patch tests with user instead of a term, which I don't think would require changing setUp().

#10 @johnbillion
8 years ago

  • Keywords commit added; needs-testing removed
  • Owner changed from swissspidy to johnbillion
  • Status changed from assigned to reviewing

#11 @johnbillion
8 years ago

  • Resolution set to fixed
  • Status changed from reviewing to closed

In 39599:

Posts, Post Types: Ensure is_page_template() can only return true when viewing a singular post query.

Props natereist, dlh
Fixes #39211

#12 @johnbillion
8 years ago

  • Keywords fixed-major added; commit removed
  • Resolution fixed deleted
  • Status changed from closed to reopened

#13 @dd32
8 years ago

  • Resolution set to fixed
  • Status changed from reopened to closed

In 39608:

Posts, Post Types: Ensure is_page_template() can only return true when viewing a singular post query.

Props natereist, dlh, johnbillion.
Merges [39599] to the 4.7 branch.
Fixes #39211.

#14 @ocean90
8 years ago

#39413 was marked as a duplicate.

Note: See TracTickets for help on using tickets.