Themes: Report theme as broken that sets itself as its parent.
Props davilera. Fixes #40820. git-svn-id: https://develop.svn.wordpress.org/trunk@41601 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
14b593d669
commit
b3b2ac2a55
@ -250,6 +250,14 @@ final class WP_Theme implements ArrayAccess {
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! $this->template && $this->stylesheet === $this->headers['Template'] ) {
|
||||
/* translators: %s: Template */
|
||||
$this->errors = new WP_Error( 'theme_child_invalid', sprintf( __( 'The theme defines itself as its parent theme. Please check the "%s" header.' ), 'Template' ) );
|
||||
$this->cache_add( 'theme', array( 'headers' => $this->headers, 'errors' => $this->errors, 'stylesheet' => $this->stylesheet ) );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// (If template is set from cache [and there are no errors], we know it's good.)
|
||||
if ( ! $this->template && ! ( $this->template = $this->headers['Template'] ) ) {
|
||||
$this->template = $this->stylesheet;
|
||||
|
@ -0,0 +1,4 @@
|
||||
/*
|
||||
Theme Name: Child and Parent Theme
|
||||
Template: child-parent-itself
|
||||
*/
|
@ -140,6 +140,16 @@ class Tests_Theme_WPTheme extends WP_UnitTestCase {
|
||||
$this->assertFalse( $theme->display( 'Tags' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 40820
|
||||
*/
|
||||
function test_child_theme_with_itself_as_parent_should_appear_as_broken() {
|
||||
$theme = new WP_Theme( 'child-parent-itself', $this->theme_root );
|
||||
$errors = $theme->errors();
|
||||
$this->assertWPError( $errors );
|
||||
$this->assertEquals( 'theme_child_invalid', $errors->get_error_code() );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enable a single theme on a network.
|
||||
|
@ -176,7 +176,19 @@ class Tests_Theme_ThemeDir extends WP_UnitTestCase {
|
||||
*/
|
||||
function test_broken_themes() {
|
||||
$themes = get_themes();
|
||||
$expected = array('broken-theme' => array('Name' => 'broken-theme', 'Title' => 'broken-theme', 'Description' => __('Stylesheet is missing.')));
|
||||
|
||||
$expected = array(
|
||||
'broken-theme' => array(
|
||||
'Name' => 'broken-theme',
|
||||
'Title' => 'broken-theme',
|
||||
'Description' => __( 'Stylesheet is missing.' ),
|
||||
),
|
||||
'Child and Parent Theme' => array(
|
||||
'Name' => 'Child and Parent Theme',
|
||||
'Title' => 'Child and Parent Theme',
|
||||
'Description' => sprintf( __( 'The theme defines itself as its parent theme. Please check the "%s" header.' ), 'Template' ),
|
||||
),
|
||||
);
|
||||
|
||||
$this->assertEquals($expected, get_broken_themes() );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user