Summary
A frontend request can terminate with a fatal error when the theme attempts to load its navigation walker and the mapped class file is unavailable.
Expected behavior: an unavailable mapped class file is handled without a PHP require() fatal.
Actual behavior: loading the navigation walker reaches a required-file error for nav_walker.php, preventing the frontend request from completing.
Impact: the affected site returned a fatal error on the frontend.
Customer context
- Product / area: Neve navigation menu autoloading
- Version: 4.2.10
- Environment: WordPress 6.9.5; PHP 7.4.33
- Integration / third party: Themeisle SDK 3.3.59 reported, but the crash is outside SDK code
- Reported error / symptom:
require(): Failed opening required '.../nav_walker.php'
- Impact: One frontend fatal across one distinct production site in the telemetry query window.
Reproduction notes
- Use Neve 4.2.10 with the navigation component active on the frontend.
- In a controlled copy, make the mapped
nav_walker.php unavailable or unreadable.
- Render a primary navigation menu.
Reported production result: a shutdown-detected fatal at autoloader.php:148 stating that nav_walker.php could not be opened. The precise deployment condition that made the file unavailable was not captured.
Diagnosis
Conclusion
Telemetry identifies a fatal at autoloader.php:148 while loading nav_walker.php. The inspected 4.2.10 source maps Neve\Views\Nav_Walker to that file and its autoloader invokes require unconditionally, despite its documented boolean missing-file contract. This directly explains why an unavailable mapped file produces a fatal rather than an autoload failure.
Where this likely occurs
autoloader.php — Neve\Autoloader::load_mapped_file() lines 120-137 derives a lower-case PHP path for registered Neve classes and delegates it to require_file().
autoloader.php — Neve\Autoloader::require_file() lines 141-150 calls require $file without an existence/readability guard; telemetry reports the fatal at line 148.
start.php — neve_run() lines 49-57 registers the Neve namespace against the theme's inc/ directory, making Neve\Views\Nav_Walker resolve to inc/views/nav_walker.php.
header-footer-grid/templates/components/component-nav.php — navigation template lines 34-45 passes \Neve\Views\Nav_Walker to wp_nav_menu() on frontend rendering.
- Git history shows commit
6567e40d24f6219b08323f8f33cdcc967ebad4eb (perf: PHP optimizations, 2019-08-07) removed the prior file_exists() check from require_file(). The source currently identifies itself as 4.2.10 in functions.php line 11.
Engineering notes
inc/views/nav_walker.php is present in the inspected 4.2.10 checkout at lines 1-21, so the telemetry alone does not establish why the affected production copy lacked or could not read it. A partial update, altered deployment, or filesystem condition remains an inference.
- The failure is outside the bundled Themeisle SDK according to the telemetry and the relevant autoloader is Neve code.
- The observed frontend path uses the primary navigation component. The secondary navigation component names a subclass that also depends on this base file, but that path was not runtime-verified.
Test coverage status
tests/test-neve-loaders.php lines 18-23 verifies successful autoloading of several available classes. No relevant coverage was found during inspection for a missing mapped class file or for the navigation walker path.
What to verify or explore next
- May be worth reproducing with a test theme copy where
inc/views/nav_walker.php is unavailable and a frontend primary menu renders.
- Check whether package installation, update, or deployment logs for the affected environment indicate an incomplete or modified theme directory.
- Run the existing PHP loader test suite alongside a missing-file autoload scenario.
Unknowns / follow-up
- The telemetry redacts the full filesystem path and contains no structured stack trace, so the exact deployed directory state is unavailable.
- The report records one occurrence on one site; broader frequency is unknown.
Confidence
Confidence: 95/100
The production fatal is directly attributable to Neve's autoloader requiring a mapped class file without checking that it exists. The matching nav_walker.php is present in the inspected 4.2.10 source, which points to a partial or inconsistent deployed theme copy as the trigger; the unguarded autoloader turns that condition into a frontend fatal.
Crash telemetry
|
|
| Occurrences |
1 |
| Distinct sites |
1 |
| First seen |
2026-08-05 22:26 UTC |
| Last seen |
2026-08-05 22:26 UTC |
| Crash location |
product:autoloader.php:148 |
| Request context |
frontend |
| Inside Themeisle SDK |
no |
| Product versions |
4.2.10 |
| WP versions |
6.9.5 |
| PHP versions |
7.4.33 |
| SDK versions |
3.3.59 |
Source: automated crash report — neve, fingerprint 77a475d801fccb939830cab3c000ee09
Generated by bug-report-triage (ID: bug-report-triage_6a7c0c0977b985.30108432)
Summary
A frontend request can terminate with a fatal error when the theme attempts to load its navigation walker and the mapped class file is unavailable.
Expected behavior: an unavailable mapped class file is handled without a PHP
require()fatal.Actual behavior: loading the navigation walker reaches a required-file error for
nav_walker.php, preventing the frontend request from completing.Impact: the affected site returned a fatal error on the frontend.
Customer context
require(): Failed opening required '.../nav_walker.php'Reproduction notes
nav_walker.phpunavailable or unreadable.Reported production result: a shutdown-detected fatal at
autoloader.php:148stating thatnav_walker.phpcould not be opened. The precise deployment condition that made the file unavailable was not captured.Diagnosis
Conclusion
Telemetry identifies a fatal at
autoloader.php:148while loadingnav_walker.php. The inspected 4.2.10 source mapsNeve\Views\Nav_Walkerto that file and its autoloader invokesrequireunconditionally, despite its documented boolean missing-file contract. This directly explains why an unavailable mapped file produces a fatal rather than an autoload failure.Where this likely occurs
autoloader.php—Neve\Autoloader::load_mapped_file()lines 120-137 derives a lower-case PHP path for registeredNeveclasses and delegates it torequire_file().autoloader.php—Neve\Autoloader::require_file()lines 141-150 callsrequire $filewithout an existence/readability guard; telemetry reports the fatal at line 148.start.php—neve_run()lines 49-57 registers theNevenamespace against the theme'sinc/directory, makingNeve\Views\Nav_Walkerresolve toinc/views/nav_walker.php.header-footer-grid/templates/components/component-nav.php— navigation template lines 34-45 passes\Neve\Views\Nav_Walkertowp_nav_menu()on frontend rendering.6567e40d24f6219b08323f8f33cdcc967ebad4eb(perf: PHP optimizations, 2019-08-07) removed the priorfile_exists()check fromrequire_file(). The source currently identifies itself as 4.2.10 infunctions.phpline 11.Engineering notes
inc/views/nav_walker.phpis present in the inspected 4.2.10 checkout at lines 1-21, so the telemetry alone does not establish why the affected production copy lacked or could not read it. A partial update, altered deployment, or filesystem condition remains an inference.Test coverage status
tests/test-neve-loaders.phplines 18-23 verifies successful autoloading of several available classes. No relevant coverage was found during inspection for a missing mapped class file or for the navigation walker path.What to verify or explore next
inc/views/nav_walker.phpis unavailable and a frontend primary menu renders.Unknowns / follow-up
Confidence
Confidence: 95/100
The production fatal is directly attributable to Neve's autoloader requiring a mapped class file without checking that it exists. The matching
nav_walker.phpis present in the inspected 4.2.10 source, which points to a partial or inconsistent deployed theme copy as the trigger; the unguarded autoloader turns that condition into a frontend fatal.Crash telemetry
product:autoloader.php:148Source: automated crash report — neve, fingerprint
77a475d801fccb939830cab3c000ee09Generated by bug-report-triage (ID: bug-report-triage_6a7c0c0977b985.30108432)