Allow `is_page_template()` to accept an array, as many other conditional tags do.
props morganestes, tyxla, DrewAPicture. fixes #31271. git-svn-id: https://develop.svn.wordpress.org/trunk@31754 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
a2abc13285
commit
21134a0c89
|
@ -1629,12 +1629,13 @@ function get_the_password_form( $post = 0 ) {
|
|||
* Whether currently in a page template.
|
||||
*
|
||||
* This template tag allows you to determine if you are in a page template.
|
||||
* You can optionally provide a template name and then the check will be
|
||||
* specific to that template.
|
||||
* You can optionally provide a template name or array of template names
|
||||
* and then the check will be specific to that template.
|
||||
*
|
||||
* @since 2.5.0
|
||||
* @since 4.2.0 The `$template` parameter was changed to accept an array of page templates.
|
||||
*
|
||||
* @param string $template The specific template name if specific matching is required.
|
||||
* @param string|array $template The specific template name or array of templates to match.
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
function is_page_template( $template = '' ) {
|
||||
|
@ -1649,6 +1650,14 @@ function is_page_template( $template = '' ) {
|
|||
if ( $template == $page_template )
|
||||
return true;
|
||||
|
||||
if ( is_array( $template ) ) {
|
||||
if ( ( in_array( 'default', $template, true ) && ! $page_template )
|
||||
|| in_array( $page_template, $template, true )
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'default' == $template && ! $page_template )
|
||||
return true;
|
||||
|
||||
|
|
|
@ -960,4 +960,32 @@ class Tests_Query_Conditionals extends WP_UnitTestCase {
|
|||
$this->assertFalse( $q->is_page( $p2_name ) );
|
||||
$this->assertFalse( $q->is_page( $p2 ) );
|
||||
}
|
||||
|
||||
function test_is_page_template() {
|
||||
$post_id = $this->factory->post->create( array( 'post_type' => 'page' ) );
|
||||
update_post_meta($post_id, '_wp_page_template', 'example.php');
|
||||
$this->go_to( "/?page_id=$post_id" );
|
||||
$this->assertTrue( is_page_template( 'example.php' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 31271
|
||||
*/
|
||||
function test_is_page_template_default() {
|
||||
$post_id = $this->factory->post->create( array( 'post_type' => 'page' ) );
|
||||
$this->go_to( "/?page_id=$post_id" );
|
||||
$this->assertTrue( is_page_template( 'default' ) );
|
||||
$this->assertTrue( is_page_template( array( 'random', 'default' ) ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 31271
|
||||
*/
|
||||
function test_is_page_template_array() {
|
||||
$post_id = $this->factory->post->create( array( 'post_type' => 'page' ) );
|
||||
update_post_meta($post_id, '_wp_page_template', 'example.php');
|
||||
$this->go_to( "/?page_id=$post_id" );
|
||||
$this->assertFalse( is_page_template( array( 'test.php' ) ) );
|
||||
$this->assertTrue( is_page_template( array('test.php', 'example.php') ) );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue