WP::handle_404()
- Since
- 2.0.0
- Source
wp-includes/class-wp.php:724
Description
Issue a 404 if a request doesn't match any posts and doesn't match any object (e.g. an existing-but-empty category, tag, author) and a 404 was not already issued, and if the request was not a search or the homepage.
Otherwise, issue a 200.
This sets headers after posts have been queried. handle_404() really means "handle status".
By inspecting the result of querying posts, seemingly successful requests can be switched to a 404 so that canonical redirection logic can kick in.
Compatibility
- WordPress
- since 2.0.0
- PHP
- 7.4–8.6-dev
- 6.7.7
- 6.8.8
- 6.9.7
- 7.0.4
- 7.1.0
Present in every tracked release (6.7.7 to 7.1.0), and compiles on PHP 7.4 through 8.6-dev.
Performance profile
How much work a call to WP::handle_404() does, and what it touches: the algorithmic scaling, the Zend instruction count per call across PHP versions, the hooks it hands control to, and the core code that calls it. Measured from the compiled opcodes, not a stopwatch, so every number is identical on any machine running the same PHP version, and every function in core is ranked by cost.
- Cost class
- Trivial
- Scaling
- Constant
- Instructions
- 9–75
- Plugin surface
- 1 hook
- Called by
- 1
Touches nothing outside its own arguments.
No loop in the body: the same number of instructions runs whatever you pass in.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 120.
Third-party callbacks on 'pre_handle_404' run inside this call, and their cost is not bounded by anything here.
1 place in core call this, so the cost is paid more often than your own code shows.
What it touches
- hookthird-party callbacks
apply_filters()called directly
Further down the call graph this can also reach query, cache, serialize, option and transient. Those are the worst case, several calls deep and usually down an error path, not what a normal call pays.
What one call costs · 92 distinct outcomes
One number would be a lie: the work depends on which branch runs. These are every distinct cost WP::handle_404() can have, taken from its control-flow graph on PHP 8.5.
| When | Instructions | Calls it makes |
|---|---|---|
| always | 9 | apply_filters() |
is_404() | 12 | apply_filters(), is_404() |
!is_404() && is_admin() | 22 | apply_filters(), is_404(), is_admin(), status_header() |
!is_404() && !is_admin() && is_robots() | 25 | apply_filters(), is_404(), is_admin(), is_robots(), status_header() |
!is_404() && is_admin() | 26 | apply_filters(), is_404(), is_admin(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && is_favicon() | 28 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), status_header() |
!is_404() && !is_admin() && is_robots() | 29 | apply_filters(), is_404(), is_admin(), is_robots(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && is_paged() | 31 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), status_header() |
!is_404() && !is_admin() && !is_robots() && is_favicon() | 32 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && $wp_query | 35–53 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_singular(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && is_paged() | 35 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && $wp_query | 39–57 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_singular(), ->set_404(), status_header(), nocache_headers() |
80 further outcomes, up to 75 instructions
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && get_queried_object() | 45–49 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && is_user_member_of_blog() | 47 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && !get_queried_object() && is_home() | 48–52 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && get_queried_object() | 48–52 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && get_queried_object() | 49–53 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && is_user_member_of_blog() | 51 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && !get_queried_object() && !is_home() && is_search() | 51–55 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && !get_queried_object() && is_home() | 51–55 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && get_queried_object() | 51–55 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && !get_queried_object() && is_home() | 52–56 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && get_queried_object() | 52–56 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && get_queried_object() | 53 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && !get_queried_object() && !is_home() && !is_search() | 53–58 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && !get_queried_object() && !is_home() && is_search() | 54–58 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && is_home() | 54–58 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && is_home() | 54–58 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && get_queried_object() | 54–58 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && !get_queried_object() && !is_home() && is_search() | 55–59 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && !get_queried_object() && is_home() | 55–59 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && get_queried_object() | 55–59 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && !get_queried_object() && is_home() | 56 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && get_queried_object() | 56 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && !get_queried_object() && !is_home() && !is_search() | 56–61 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && $wp_query && is_singular() && !empty($value) | 57–64 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_singular(), substr_count(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && get_queried_object() | 57 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && is_search() | 57–61 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && is_search() | 57–61 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && is_home() | 57–61 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_tag() && !get_queried_object() && !is_home() && !is_search() | 57–62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && !get_queried_object() && !is_home() && is_search() | 58–62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && is_home() | 58–62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && is_home() | 58–62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && get_queried_object() | 58–62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && !get_queried_object() && !is_home() && is_search() | 59 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && !get_queried_object() && is_home() | 59 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && get_queried_object() | 59 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && !is_search() | 59–64 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && !is_search() | 59–64 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && !get_queried_object() && is_home() | 60 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && get_queried_object() | 60 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && is_search() | 60–64 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && is_category() && !get_queried_object() && !is_home() && !is_search() | 60–65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && $wp_query && is_singular() && !empty($value) | 61–68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_singular(), substr_count(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && !get_queried_object() && !is_home() && !is_search() | 61–62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && is_search() | 61–65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && is_search() | 61–65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && is_home() | 61–65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && !get_queried_object() && !is_home() && is_search() | 62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && is_home() | 62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && is_home() | 62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && get_queried_object() | 62 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && !is_search() | 62–67 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && !get_queried_object() && !is_home() && is_search() | 63 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && !get_queried_object() && is_home() | 63 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && get_queried_object() | 63 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && !is_search() | 63–68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && !is_search() | 63–68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && !get_queried_object() && !is_home() && !is_search() | 64–65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && is_search() | 64–68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && is_search() | 65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && is_search() | 65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && is_home() | 65 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && is_tag() && !get_queried_object() && !is_home() && !is_search() | 65–66 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && !get_queried_object() && !is_home() && is_search() | 66 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && is_home() | 66 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && is_home() | 66 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && get_queried_object() | 66 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && !is_search() | 66–71 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && !is_search() | 67–68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && !is_search() | 67–68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && is_search() | 68 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && is_category() && !get_queried_object() && !is_home() && !is_search() | 68–69 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && is_search() | 69 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && is_search() | 69 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && is_home() | 69 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && !is_search() | 70–71 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), is_feed(), status_header() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && is_tax() && !get_queried_object() && !is_home() && !is_search() | 71–72 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && !is_post_type_archive() && !is_home() && !is_search() | 71–72 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && is_search() | 72 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), ->set_404(), status_header(), nocache_headers() |
!is_404() && !is_admin() && !is_robots() && !is_favicon() && !$wp_query && !is_paged() && is_author() && $author && !is_user_member_of_blog() && !is_tag() && !is_category() && !is_tax() && is_post_type_archive() && !get_queried_object() && !is_home() && !is_search() | 74–75 | apply_filters(), is_404(), is_admin(), is_robots(), is_favicon(), is_paged(), get_query_var(), is_author(), is_user_member_of_blog(), is_tag(), is_category(), is_tax(), is_post_type_archive(), get_queried_object(), is_home(), is_search(), is_feed(), ->set_404(), status_header(), nocache_headers() |
Across PHP versions
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 120 | 9–75 | 28 | |
| 8.5 | 120 | 9–75 | 28 | |
| 8.4 | 120 | 9–75 | 28 | 9 fewer instructions than PHP 8.3 |
| 8.3 | 129 | 9–77 | 28 | |
| 8.2 | 129 | 9–77 | 28 | |
| 8.1 | 129 | 9–77 | 28 | 2 fewer instructions than PHP 7.4 |
| 7.4 | 131 | 9–77 | 28 |
An instruction is not a fixed amount of time, so a matching count is not necessarily the same speed; what it rules out is a difference in the work itself.
Hooks and filters fired · 1
One hook fires while WP::handle_404() runs, in this order:
- apply_filters( pre_handle_404 )filterline 738 (+14 into the body)
Filters whether to short-circuit default header status handling.
Uses · 21
- apply_filters()Calls the callback functions that have been added to a filter hook.
- is_404()Determines whether the query has resulted in a 404 (returns no results).
- is_admin()Determines whether the current request is for an administrative interface page.
- is_robots()Is the query for the robots.txt file?
- is_favicon()Is the query for the favicon.ico file?
- is_singular()Determines whether the query is for an existing single post of any post type (post, attachment, page, custom post types).
- str_contains()Polyfill for `str_contains()` function added in PHP 8.0.
- is_paged()Determines whether the query is for a paged result and not for the first page.
- get_query_var()Retrieves the value of a query variable in the WP_Query class.
- is_author()Determines whether the query is for an existing author archive page.
- is_user_member_of_blog()Finds out whether a user is a member of a given blog.
- is_tag()Determines whether the query is for an existing tag archive page.
Show all 21
- is_category()Determines whether the query is for an existing category archive page.
- is_tax()Determines whether the query is for an existing custom taxonomy archive page.
- is_post_type_archive()Determines whether the query is for an existing post type archive page.
- get_queried_object()Retrieves the currently queried object.
- is_home()Determines whether the query is for the blog homepage.
- is_search()Determines whether the query is for a search.
- is_feed()Determines whether the query is for a feed.
- status_header()Sets HTTP status header.
- nocache_headers()Sets the HTTP headers to prevent caching for the different browsers.
Used by · 1
- WP::main()Sets up all of the variables required by the WordPress environment.
Source code
public function handle_404() { global $wp_query; /** * Filters whether to short-circuit default header status handling. * * Returning a non-false value from the filter will short-circuit the handling * and return early. * * @since 4.5.0 * * @param bool $preempt Whether to short-circuit default header status handling. Default false. * @param WP_Query $wp_query WordPress Query object. */ if ( false !== apply_filters( 'pre_handle_404', false, $wp_query ) ) { return; } // If we've already issued a 404, bail. if ( is_404() ) { return; } $set_404 = true; // Never 404 for the admin, robots, or favicon. if ( is_admin() || is_robots() || is_favicon() ) { $set_404 = false; // If posts were found, check for paged content. } elseif ( $wp_query->posts ) { $content_found = true; if ( is_singular() ) { $post = $wp_query->post ?? null; $next = '<!--nextpage-->'; // Check for paged content that exceeds the max number of pages. if ( $post && ! empty( $this->query_vars['page'] ) ) { // Check if content is actually intended to be paged. if ( str_contains( $post->post_content, $next ) ) { $page = trim( $this->query_vars['page'], '/' ); $content_found = (int) $page <= ( substr_count( $post->post_content, $next ) + 1 ); } else { $content_found = false; } } } // The posts page does not support the <!--nextpage--> pagination. if ( $wp_query->is_posts_page && ! empty( $this->query_vars['page'] ) ) { $content_found = false; } if ( $content_found ) { $set_404 = false; } // We will 404 for paged queries, as no posts were found. } elseif ( ! is_paged() ) { $author = get_query_var( 'author' ); // Don't 404 for authors without posts as long as they matched an author on this site. if ( is_author() && is_numeric( $author ) && $author > 0 && is_user_member_of_blog( $author ) // Don't 404 for these queries if they matched an object. || ( is_tag() || is_category() || is_tax() || is_post_type_archive() ) && get_queried_object() // Don't 404 for these queries either. || is_home() || is_search() || is_feed() ) { $set_404 = false; } } if ( $set_404 ) { // Guess it's time to 404. $wp_query->set_404(); status_header( 404 ); nocache_headers(); } else { status_header( 200 );Changelog
Introduced in 2.0.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/class-wp.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.