WordPress.org

Make WordPress Core


Ignore:
Timestamp:
10/23/2017 08:07:06 PM (4 years ago)
Author:
swissspidy
Message:

Themes: Show templates from both parent and child theme when calling WP_Theme::get_post_templates().

Props birgire for initial patch.
Fixes #41717.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/admin/includesTheme.php

    r39906 r41975  
    123123
    124124        $this->assertEqualSetsWithIndex( array(
    125             'Top Level' => 'template-top-level-post-types.php',
    126             'Sub Dir'   => 'subdir/template-sub-dir-post-types.php',
     125            'Top Level'                  => 'template-top-level-post-types.php',
     126            'Sub Dir'                    => 'subdir/template-sub-dir-post-types.php',
     127            'Top Level In A Child Theme' => 'template-top-level-post-types-child.php',
     128            'Sub Dir In A Child Theme'   => 'subdir/template-sub-dir-post-types-child.php',
    127129        ), get_page_templates( null, 'foo' ) );
     130
    128131        $this->assertEqualSetsWithIndex( array(
    129132            'Top Level' => 'template-top-level-post-types.php',
    130133            'Sub Dir'   => 'subdir/template-sub-dir-post-types.php',
    131134        ), get_page_templates( null, 'post' ) );
     135
    132136        $this->assertEqualSetsWithIndex( array(
    133137            'Top Level'                           => 'template-top-level.php',
     
    135139            'This Template Header Is On One Line' => 'template-header.php',
    136140        ), get_page_templates() );
     141
    137142        $this->assertEquals( array(), get_page_templates( null, 'bar' ) );
     143    }
     144
     145    /**
     146     * @ticket 41717
     147     */
     148    public function test_get_post_templates_child_theme() {
     149        $theme = wp_get_theme( 'page-templates-child' );
     150        $this->assertNotEmpty( $theme );
     151
     152        switch_theme( $theme['Template'], $theme['Stylesheet'] );
     153
     154        $post_templates = $theme->get_post_templates();
     155
     156        $this->assertEqualSetsWithIndex( array(
     157            'template-top-level-post-types.php'            => 'Top Level',
     158            'subdir/template-sub-dir-post-types.php'       => 'Sub Dir',
     159            'template-top-level-post-types-child.php'      => 'Top Level In A Child Theme',
     160            'subdir/template-sub-dir-post-types-child.php' => 'Sub Dir In A Child Theme',
     161        ), $post_templates['foo'] );
     162
     163        $this->assertEqualSetsWithIndex( array(
     164            'template-top-level-post-types.php'      => 'Top Level',
     165            'subdir/template-sub-dir-post-types.php' => 'Sub Dir',
     166        ), $post_templates['post'] );
     167
     168        $this->assertEqualSetsWithIndex( array(
     169            'template-top-level.php'      => 'Top Level',
     170            'subdir/template-sub-dir.php' => 'Sub Dir',
     171            'template-header.php'         => 'This Template Header Is On One Line',
     172        ), $post_templates['page'] );
    138173    }
    139174
Note: See TracChangeset for help on using the changeset viewer.