WordPress.org

Make WordPress Core

Opened 2 years ago

Closed 18 months ago

Last modified 7 months ago

#20519 closed defect (bug) (fixed)

PHP Notice in get_single_template()

Reported by: markjaquith Owned by: ryan
Milestone: 3.5 Priority: normal
Severity: normal Version: 3.0
Component: Warnings/Notices Keywords: has-patch commit
Focuses: Cc:

Description

PHP Notice: Trying to get property of non-object in wp-includes/template.php on line 283

These get_*_template() functions make a lot of assumptions about the current state of the environment.

Attachments (2)

validate-template-vars.diff (3.1 KB) - added by wonderboymusic 19 months ago.
20519.diff (2.8 KB) - added by ryan 18 months ago.

Download all attachments as: .zip

Change History (9)

comment:1 SergeyBiryukov2 years ago

Related: #17662, #18614

Last edited 2 years ago by SergeyBiryukov (previous) (diff)

comment:2 nacin2 years ago

  • Version changed from 3.4 to 3.0

comment:3 wonderboymusic19 months ago

  • Keywords has-patch added
  • Milestone changed from Awaiting Review to 3.5

This patch has basic validation for the passing of vars to template file names

comment:4 nacin19 months ago

I think in most cases it should be enough to validate we have an object. So rather than:

if ( isset( $author->user_nicename ) )
 	$templates[] = "author-{$author->user_nicename}.php";
if ( isset( $author->ID ) )
        $templates[] = "author-{$author->ID}.php";

We can do:

if ( $author ) {
 	$templates[] = "author-{$author->user_nicename}.php";
        $templates[] = "author-{$author->ID}.php";
}

ryan18 months ago

comment:5 ryan18 months ago

  • Keywords commit added

comment:6 ryan18 months ago

  • Owner set to ryan
  • Resolution set to fixed
  • Status changed from new to closed

In [22293]:

Avoid notices in get_*_template() functions that use get_queried_object(), which can return null. Props wonderboymusic. fixes #20519

comment:7 chriscct77 months ago

I believe this still happens, and I opened a new ticket here on it: http://core.trac.wordpress.org/ticket/25398

Note: See TracTickets for help on using tickets.