I found that the problem was with the otherwise very useful plugin Legacy URL Forwarding.
It uses the following function (abridged here) with the 404_template
hook.
function doUrlForwarding() {
// make a $query based on the $_SERVER['REQUEST_URI']
// if a post is found, redirect to it
if (!empty($query->post->ID)) {
wp_redirect(get_permalink($query->post->ID), '301' );
}
}
add_action('404_template','doUrlForwarding');
With the above hook active, the 404.php does not get fired. However, if I place doUrlForwarding
at the top of 404.php, it works correctly.
This answers the mystery, but I still don’t know why using the
404_template hook is preventing the 404.php template from loading on
normal 404s. Comment if you have an idea.
Related Posts:
- Turning on the 404 page on localhost
- When a link doesn’t exist, how to tell WordPress what to do? (404 Error Page)
- get_search_link() redirects to 404 template page
- Taxonomy term page going to 404
- /wp-admin/post.php shows 404 template on submit
- Display a custom 404 page without a redirect
- Is this the best way to complete disable category archive pages?
- wp e-commerce single-product template giving 404
- How to use Class
in Java? - Is there any way to use get_template_part() with folders?
- How to edit contents of dynamic_sidebar()?
- Loading partial templates with AJAX/PJAX
- A special single page templates for posts under a category and all its child category
- Gravity Forms Custom Templates [closed]
- Where to store some per-template preferences?
- How do I override template-tags.php in twentyseventeen theme
- Filter to change the content of 404 page
- roots child theme can’t override header.php
- When calling wp_title(), do you have to create some kind of “title.php” file?
- Stream Video Player does not work with do_shortcode()?
- What is a good way to present templated content in WordPress?
- How does wordpress blocks?
- Which has more impact on site performance? Template overrides or hooks
- Subpage template
- Advanced Custom Fields – display when specific template used?
- What should I put on my index.php?
- How To Create WooCommerce Custom Template For Specific Product?
- Have functions work outside the loop with 404 override
- How to Use Twig + Timber with Multiple Loops based on Meta Key Value
- Programatically create a page
- Missing .twig files in wordpress theme editor
- How to custom page template for the Gutenberg editor
- Use PHP templates as blocks
- Customize profile.php
- Change wp-signup.php Page Template
- Directly using pure JWPlayer JS (but NOT WP Plugin)
- Login page theming?
- Use same page template for parent and child pages in a theme
- Template administration Error after WP 4.8 update
- Markup is visible when I view sample data from my template
- if page is parent page redirect to first child with hook / polylang
- Custom template bypassing to pager to index.php
- Bizarre issue with custom RSS template
- How to put limit on slider
- What are the main parts of a WordPress Template?
- Using shortcode in template file
- Display current category and child
- Is there a more efficient way to loop through pages?
- Page template option missing
- Trying to create a template without navigation and footer
- What template is used for viewing Media Library Files?
- Genesis – Adding custom hooks to display secondary navigation
- Remove portion of header code from home page only
- Use a separate template for the home page only
- Force WordPress to NOT display the manual excerpt
- How do I remove the word “Blog” from a WordPress Homepage?
- Can I assign a Folder for Post Formats, without it affecting WordPress’ fallback/hierarchical system?
- Custom Template page not loading get_header() correct?
- Easiest way to map content (in json) to the view (template)?
- Removing calls to noindex() and wp_no_robots()
- Query the database after get_header() has been included
- Does wp_mail work in frontend tempate file?
- Dynamically generated URL and Content page
- Organize template parts and page templates in folders in regards of template hierarchy
- Custom /Page/2/ Template Only
- wordpress – modifying template to show more posts
- How to get all template files used for rendering a single post/page?
- How to insert “get_template_part()” based on Category ID?
- Home page not loading after editing header.php file
- How can I include ALL post types in the_post_navigation() links, not just current post type?
- Template includes
- Two different single.php depending on source page
- Attachment URL for an image is loading direct image file
- Fixing media query
- I’ve installed example data on Nominee template but the published site shows another version of the site
- Set og:image programmatically in custom single post with external images
- Displaying all posts of a category in full view on one page using their single.php template
- why does not showing my custom post category list in any template?
- Locating the HTML piece of code in wordpress
- Custom Template doesn’t output result when set as homepage
- Theme keeps going to default files [closed]
- How to adjust only the template gallery
- How can I show contents of a template part inside of another page?
- How to serve a amp template
- Single page applications with WordPress: routes and templates
- Inserting javascript file into theme template?
- Creating custom post-listing templates in twentyseventeen child theme
- Display different list of “Custom Templates” for each Custom Page Type
- Submit form to another template (ugly url)
- Using file outside of template hierarchy for Twitter sign in authentication
- Page Templates Used in Custom Post Type
- List all pages using a specific template on a page
- Is it better practice to create many page templates, or a a few base templates with custom HTML added via TinyMCE?
- Duplicated Template Does Not Load the Same as the Original Template File?
- Blog template PHP [closed]
- load_textdomain won’t load my .mo file
- files disappearing from template
- why does blog page ignore template [closed]
- My homepage’s width has reduced and I can´t fix it [closed]
- html blog template to wordpress template