Let is_attachment()
accept an $attachment parameter, similar to is_page()
and is_single()
. Adds Unit Tests for all 3.
Props alex-ye for the initial patch. Fixes #24257. git-svn-id: https://develop.svn.wordpress.org/trunk@27016 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
b29b5b21e4
commit
300cb7451e
@ -175,9 +175,10 @@ function is_post_type_archive( $post_types = '' ) {
|
||||
* @since 2.0.0
|
||||
* @uses $wp_query
|
||||
*
|
||||
* @param mixed $attachment Attachment ID, title, slug, or array of such.
|
||||
* @return bool
|
||||
*/
|
||||
function is_attachment() {
|
||||
function is_attachment( $attachment = '' ) {
|
||||
global $wp_query;
|
||||
|
||||
if ( ! isset( $wp_query ) ) {
|
||||
@ -185,7 +186,7 @@ function is_attachment() {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $wp_query->is_attachment();
|
||||
return $wp_query->is_attachment( $attachment );
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3387,10 +3388,30 @@ class WP_Query {
|
||||
*
|
||||
* @since 3.1.0
|
||||
*
|
||||
* @param mixed $attachment Attachment ID, title, slug, or array of such.
|
||||
* @return bool
|
||||
*/
|
||||
function is_attachment() {
|
||||
return (bool) $this->is_attachment;
|
||||
function is_attachment( $attachment = '' ) {
|
||||
if ( ! $this->is_attachment ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( empty( $attachment ) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$attachment = (array) $attachment;
|
||||
|
||||
$post_obj = $this->get_queried_object();
|
||||
|
||||
if ( in_array( $post_obj->ID, $attachment ) ) {
|
||||
return true;
|
||||
} elseif ( in_array( $post_obj->post_title, $attachment ) ) {
|
||||
return true;
|
||||
} elseif ( in_array( $post_obj->post_name, $attachment ) ) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -670,4 +670,43 @@ class Tests_Query_Conditionals extends WP_UnitTestCase {
|
||||
function pre_get_posts_with_type_array( &$query ) {
|
||||
$query->set( 'post_type', array( 'post', 'thearray' ) );
|
||||
}
|
||||
|
||||
function test_is_single() {
|
||||
$post_id = $this->factory->post->create();
|
||||
$this->go_to( "/?p=$post_id" );
|
||||
|
||||
$post = get_queried_object();
|
||||
|
||||
$this->assertTrue( is_single() );
|
||||
$this->assertTrue( is_single( $post ) );
|
||||
$this->assertTrue( is_single( $post->ID ) );
|
||||
$this->assertTrue( is_single( $post->post_title ) );
|
||||
$this->assertTrue( is_single( $post->post_name ) );
|
||||
}
|
||||
|
||||
function test_is_page() {
|
||||
$post_id = $this->factory->post->create( array( 'post_type' => 'page' ) );
|
||||
$this->go_to( "/?page_id=$post_id" );
|
||||
|
||||
$post = get_queried_object();
|
||||
|
||||
$this->assertTrue( is_page() );
|
||||
$this->assertTrue( is_page( $post ) );
|
||||
$this->assertTrue( is_page( $post->ID ) );
|
||||
$this->assertTrue( is_page( $post->post_title ) );
|
||||
$this->assertTrue( is_page( $post->post_name ) );
|
||||
}
|
||||
|
||||
function test_is_attachment() {
|
||||
$post_id = $this->factory->post->create( array( 'post_type' => 'attachment' ) );
|
||||
$this->go_to( "/?attachment_id=$post_id" );
|
||||
|
||||
$post = get_queried_object();
|
||||
|
||||
$this->assertTrue( is_attachment() );
|
||||
$this->assertTrue( is_attachment( $post ) );
|
||||
$this->assertTrue( is_attachment( $post->ID ) );
|
||||
$this->assertTrue( is_attachment( $post->post_title ) );
|
||||
$this->assertTrue( is_attachment( $post->post_name ) );
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user