Skip to content

Elementor globals REST filter crashes when response is WP_Error #4559

Description

@pirate-bot

Summary

The Elementor global-colors REST integration can crash instead of returning an error response when the globals endpoint produces an error.

Expected behavior: an error response from the Elementor globals endpoint is returned without a fatal error.

Actual behavior: the request terminates with Call to undefined method WP_Error::get_data().

Impact: affected REST requests fail, which can disrupt Elementor's global-color picker workflow.

Customer context

  • Product / area: Neve Elementor compatibility, global colors REST integration
  • Version: 4.2.10
  • Environment: WordPress 7.0.2; PHP 8.0.30 and 8.3.33 in reported occurrences
  • Integration / third party: Elementor
  • Reported error / symptom: Call to undefined method WP_Error::get_data() during a REST request
  • Impact: 2 occurrences across 2 distinct production sites between 2026-08-01 and 2026-08-03.

Reproduction notes

  1. Activate Neve 4.2.10 with Elementor.
  2. Cause the /elementor/v1/globals REST endpoint to return a WP_Error; the condition producing that response is unknown from available telemetry.
  3. Dispatch the REST request.

Reported result: Neve's rest_request_after_callbacks filter crashes with Call to undefined method WP_Error::get_data().

Local reproduction was not performed; the production stack trace and matching source code provide confirmation.

Diagnosis

Conclusion

Production telemetry establishes that the response passed to Neve's callback was a WP_Error; the recorded failure occurs at the callback's unconditional get_data() invocation. The inspected Neve 4.2.10 source has no type check or error branch before that call. This confirms that an error response for the targeted route can cause the reported fatal error.

Where this likely occurs

  • inc/compatibility/elementor.phpElementor::init() lines 61-72 registers alter_global_colors_in_picker on rest_request_after_callbacks whenever ELEMENTOR_VERSION is defined.
  • inc/compatibility/elementor.phpElementor::alter_global_colors_in_picker() lines 186-221 limits processing to /elementor/v1/globals, then calls $response->get_data() at line 210 and $response->set_data() at line 221 without validating the response object.
  • The telemetry stack trace identifies inc/compatibility/elementor.php:210 in this method under a REST request. The current checkout is tagged v4.2.10, matching the reported affected version.
  • Git history attributes the relevant method and unconditional call to 52e60f9771e73f399aa70fe6001cf3e19dc124d3 (chore: adapt global colors for elementor).

Engineering notes

  • The reported payload is an error object, so the failure occurs after the endpoint callback has produced an error and before REST dispatch completes.
  • This inspection covers the Neve free-theme integration path only. Telemetry explicitly marks the crash as outside the bundled Themeisle SDK, and the crash location resolves to Neve source.
  • The underlying Elementor condition that produces the error response was not present in the telemetry and was not reproduced locally.

Test coverage status

No relevant PHPUnit or Playwright coverage was found during inspection: searches in tests/ and e2e-tests/ found no references to alter_global_colors_in_picker or /elementor/v1/globals.

What to verify or explore next

  • Reproduce an error-returning request to /elementor/v1/globals with Neve 4.2.10 and Elementor active.
  • Check the Elementor versions and endpoint conditions on affected sites to identify what causes the original WP_Error.
  • Run the relevant Neve PHPUnit and REST integration coverage, if available in the CI environment, for both successful and error responses.

Unknowns / follow-up

  • The telemetry does not include Elementor versions, request parameters, or the error payload that preceded the crash.
  • WordPress REST internals were not available in the inspected workspace; the response type is established by the production error message rather than a local WordPress-core source check.

Confidence

Confidence: 98/100

One reported behavior was identified. Production telemetry directly records a WP_Error reaching Neve's Elementor globals REST-response filter, while the inspected 4.2.10 code unconditionally calls a response-only method; this is a confirmed Neve defect rather than an SDK issue.

Crash telemetry

Occurrences 2
Distinct sites 2
First seen 2026-08-01 06:19 UTC
Last seen 2026-08-03 08:12 UTC
Crash location product:inc/compatibility/elementor.php:210
Request context rest
Inside Themeisle SDK no
Product versions 4.2.10
WP versions 7.0.2
PHP versions 8.0.30, 8.3.33
SDK versions 3.3.59

Source: automated crash report — neve, fingerprint d43834c786817b30689d425e67b58d92
Generated by bug-report-triage (ID: bug-report-triage_6a717ffba140a1.17537101)

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions