| | 4156 | * Helper for `is_{$object_type}` methods. |
| | 4157 | * |
| | 4158 | * Checks to see whether the currently queried object is of the proper type |
| | 4159 | * and is identical to `$object`, if provided. |
| | 4160 | * |
| | 4161 | * @param string $flag The `WP_Query` flag to check for object-type status (eg 'is_page'). |
| | 4162 | * @param int|string|array $object Object identifier, as passed to the parent function. |
| | 4163 | * @param array $prop_list List of `$object` properties to compare against the currently |
| | 4164 | * queried object. Property names should be provided in order of |
| | 4165 | * precedence (ID first). |
| | 4166 | * @param bool $get_page_by_path Whether to query the database (using get_page_by_path()) |
| | 4167 | * if matches fail using available `$object` information. |
| | 4168 | * @return bool |
| | 4169 | */ |
| | 4170 | protected function is_object_type( $flag, $object, $prop_list, $get_page_by_path = false ) { |
| | 4171 | if ( empty( $this->{$flag} ) ) { |
| | 4172 | return false; |
| | 4173 | } |
| | 4174 | |
| | 4175 | if ( empty( $object ) ) { |
| | 4176 | return true; |
| | 4177 | } |
| | 4178 | |
| | 4179 | $object = array_map( 'strval', (array) $object ); |
| | 4180 | |
| | 4181 | $post_obj = $this->get_queried_object(); |
| | 4182 | |
| | 4183 | foreach ( $prop_list as $prop ) { |
| | 4184 | $prop_value = isset( $post_obj->{$prop} ) ? (string) $post_obj->{$prop} : null; |
| | 4185 | |
| | 4186 | if ( null !== $prop_value && in_array( $prop_value, $object ) ) { |
| | 4187 | return true; |
| | 4188 | } |
| | 4189 | } |
| | 4190 | |
| | 4191 | if ( $get_page_by_path ) { |
| | 4192 | foreach ( $object as $objectpath ) { |
| | 4193 | if ( ! strpos( $objectpath, '/' ) ) { |
| | 4194 | continue; |
| | 4195 | } |
| | 4196 | $objectpath_obj = get_page_by_path( $objectpath, OBJECT, $post_obj->post_type ); |
| | 4197 | |
| | 4198 | if ( $objectpath_obj && ( $objectpath_obj->ID == $post_obj->ID ) ) { |
| | 4199 | return true; |
| | 4200 | } |
| | 4201 | } |
| | 4202 | } |
| | 4203 | |
| | 4204 | return false; |
| | 4205 | } |
| | 4206 | |
| | 4207 | /** |
| 4197 | | if ( ! $this->is_attachment ) { |
| 4198 | | return false; |
| 4199 | | } |
| 4200 | | |
| 4201 | | if ( empty( $attachment ) ) { |
| 4202 | | return true; |
| 4203 | | } |
| 4204 | | |
| 4205 | | $attachment = array_map( 'strval', (array) $attachment ); |
| 4206 | | |
| 4207 | | $post_obj = $this->get_queried_object(); |
| 4208 | | |
| 4209 | | if ( in_array( (string) $post_obj->ID, $attachment ) ) { |
| 4210 | | return true; |
| 4211 | | } elseif ( in_array( $post_obj->post_title, $attachment ) ) { |
| 4212 | | return true; |
| 4213 | | } elseif ( in_array( $post_obj->post_name, $attachment ) ) { |
| 4214 | | return true; |
| 4215 | | } |
| 4216 | | return false; |
| | 4249 | return $this->is_object_type( 'is_attachment', $attachment, array( 'ID', 'post_title', 'post_name' ) ); |
| 4231 | | if ( !$this->is_author ) |
| 4232 | | return false; |
| 4233 | | |
| 4234 | | if ( empty($author) ) |
| 4235 | | return true; |
| 4236 | | |
| 4237 | | $author_obj = $this->get_queried_object(); |
| 4238 | | |
| 4239 | | $author = array_map( 'strval', (array) $author ); |
| 4240 | | |
| 4241 | | if ( in_array( (string) $author_obj->ID, $author ) ) |
| 4242 | | return true; |
| 4243 | | elseif ( in_array( $author_obj->nickname, $author ) ) |
| 4244 | | return true; |
| 4245 | | elseif ( in_array( $author_obj->user_nicename, $author ) ) |
| 4246 | | return true; |
| 4247 | | |
| 4248 | | return false; |
| | 4264 | return $this->is_object_type( 'is_author', $author, array( 'ID', 'nickname', 'user_nicename' ) ); |
| 4263 | | if ( !$this->is_category ) |
| 4264 | | return false; |
| 4265 | | |
| 4266 | | if ( empty($category) ) |
| 4267 | | return true; |
| 4268 | | |
| 4269 | | $cat_obj = $this->get_queried_object(); |
| 4270 | | |
| 4271 | | $category = array_map( 'strval', (array) $category ); |
| 4272 | | |
| 4273 | | if ( in_array( (string) $cat_obj->term_id, $category ) ) |
| 4274 | | return true; |
| 4275 | | elseif ( in_array( $cat_obj->name, $category ) ) |
| 4276 | | return true; |
| 4277 | | elseif ( in_array( $cat_obj->slug, $category ) ) |
| 4278 | | return true; |
| 4279 | | |
| 4280 | | return false; |
| | 4279 | return $this->is_object_type( 'is_category', $category, array( 'term_id', 'name', 'slug' ) ); |
| 4295 | | if ( ! $this->is_tag ) |
| 4296 | | return false; |
| 4297 | | |
| 4298 | | if ( empty( $tag ) ) |
| 4299 | | return true; |
| 4300 | | |
| 4301 | | $tag_obj = $this->get_queried_object(); |
| 4302 | | |
| 4303 | | $tag = array_map( 'strval', (array) $tag ); |
| 4304 | | |
| 4305 | | if ( in_array( (string) $tag_obj->term_id, $tag ) ) |
| 4306 | | return true; |
| 4307 | | elseif ( in_array( $tag_obj->name, $tag ) ) |
| 4308 | | return true; |
| 4309 | | elseif ( in_array( $tag_obj->slug, $tag ) ) |
| 4310 | | return true; |
| 4311 | | |
| 4312 | | return false; |
| | 4294 | return $this->is_object_type( 'is_tag', $tag, array( 'term_id', 'name', 'slug' ) ); |
| 4497 | | if ( !$this->is_page ) |
| 4498 | | return false; |
| 4499 | | |
| 4500 | | if ( empty( $page ) ) |
| 4501 | | return true; |
| 4502 | | |
| 4503 | | $page_obj = $this->get_queried_object(); |
| 4504 | | |
| 4505 | | $page = array_map( 'strval', (array) $page ); |
| 4506 | | |
| 4507 | | if ( in_array( (string) $page_obj->ID, $page ) ) { |
| 4508 | | return true; |
| 4509 | | } elseif ( in_array( $page_obj->post_title, $page ) ) { |
| 4510 | | return true; |
| 4511 | | } elseif ( in_array( $page_obj->post_name, $page ) ) { |
| 4512 | | return true; |
| 4513 | | } else { |
| 4514 | | foreach ( $page as $pagepath ) { |
| 4515 | | if ( ! strpos( $pagepath, '/' ) ) { |
| 4516 | | continue; |
| 4517 | | } |
| 4518 | | $pagepath_obj = get_page_by_path( $pagepath ); |
| 4519 | | |
| 4520 | | if ( $pagepath_obj && ( $pagepath_obj->ID == $page_obj->ID ) ) { |
| 4521 | | return true; |
| 4522 | | } |
| 4523 | | } |
| 4524 | | } |
| 4525 | | |
| 4526 | | return false; |
| | 4479 | return $this->is_object_type( 'is_page', $page, array( 'ID', 'post_title', 'post_name' ), true ); |
| 4590 | | if ( !$this->is_single ) |
| 4591 | | return false; |
| 4592 | | |
| 4593 | | if ( empty($post) ) |
| 4594 | | return true; |
| 4595 | | |
| 4596 | | $post_obj = $this->get_queried_object(); |
| 4597 | | |
| 4598 | | $post = array_map( 'strval', (array) $post ); |
| 4599 | | |
| 4600 | | if ( in_array( (string) $post_obj->ID, $post ) ) { |
| 4601 | | return true; |
| 4602 | | } elseif ( in_array( $post_obj->post_title, $post ) ) { |
| 4603 | | return true; |
| 4604 | | } elseif ( in_array( $post_obj->post_name, $post ) ) { |
| 4605 | | return true; |
| 4606 | | } else { |
| 4607 | | foreach ( $post as $postpath ) { |
| 4608 | | if ( ! strpos( $postpath, '/' ) ) { |
| 4609 | | continue; |
| 4610 | | } |
| 4611 | | $postpath_obj = get_page_by_path( $postpath, OBJECT, $post_obj->post_type ); |
| 4612 | | |
| 4613 | | if ( $postpath_obj && ( $postpath_obj->ID == $post_obj->ID ) ) { |
| 4614 | | return true; |
| 4615 | | } |
| 4616 | | } |
| 4617 | | } |
| 4618 | | return false; |
| | 4543 | return $this->is_object_type( 'is_single', $post, array( 'ID', 'post_title', 'post_name' ), true ); |