Codeinwp / neve

A fast, lightweight, AMP ready WordPress theme built with speed and usability in mind.
https://themeisle.com/themes/neve/
GNU General Public License v2.0
263 stars 84 forks source link

Customizer page is empty on fresh install #4250

Closed maltfield closed 4 months ago

maltfield commented 5 months ago

Description

There is a bug in Neve v3.8.7 such that loading the /wp-admin/customize.php page is blank.

I just did a fresh install of wordpress in a VM running Debian 10. I did not install any plugins (though wordpress came with Akismet Anti-Spam installed by default). I have the latest version of WordPress from the debian repos installed — currently that’s 6.1.6 (which is listed as supported by this theme at the time of writing). WordPress is served by nginx 1.22.1 and php8.2-fpm. I’m using the latest version of this theme (downloaded yesterday) = v3.8.7.

I’m using firefox 115.11.0esr and accessing the wordpress site at http://localhost:8081/

When I click on Appearance -> Customize, I get an empty page.

There are no PHP or web server errors appearing in the nginx logs.

There are numerous errors appearing in the javascript console:

This page uses the non standard property “zoom”. Consider using calc() in the relevant property values, or using “transform” along with “transform-origin: 0 0”. customize.php
Some cookies are misusing the recommended “SameSite“ attribute 2
Layout was forced before the page was fully loaded. If stylesheets are not yet loaded this may cause a flash of unstyled content. node.js:383
JQMIGRATE: Migrate is installed, version 3.3.2 load-scripts.php:5:709
Uncaught ReferenceError: _ is not defined
    <anonymous> http://localhost:8081/wp-includes/js/wp-util.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-includes/js/wp-util.min.js?ver=6.1.6:2
wp-util.min.js:2:98
Uncaught TypeError: b is undefined
    Backbone 3
backbone.min.js:2:4383
Uncaught ReferenceError: Backbone is not defined
    Backbone 2
wp-backbone.min.js:2:138
Uncaught TypeError: _ is undefined
    <anonymous> http://localhost:8081/wp-includes/js/media-models.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-includes/js/media-models.min.js?ver=6.1.6:2
media-models.min.js:2:12285
Uncaught TypeError: wp.media.model is undefined
    <anonymous> http://localhost:8081/wp-includes/js/plupload/wp-plupload.min.js?ver=6.1.6:1
    <anonymous> http://localhost:8081/wp-includes/js/plupload/wp-plupload.min.js?ver=6.1.6:1
wp-plupload.min.js:1:5791
Uncaught TypeError: a.view is undefined
    <anonymous> http://localhost:8081/wp-includes/js/media-views.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-includes/js/media-views.min.js?ver=6.1.6:2
media-views.min.js:2:107410
Uncaught TypeError: _ is undefined
    <anonymous> http://localhost:8081/wp-includes/js/shortcode.min.js?ver=6.1.6:2
shortcode.min.js:2:574
Uncaught TypeError: wp.media.view is undefined
    <anonymous> http://localhost:8081/wp-includes/js/media-editor.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-includes/js/media-editor.min.js?ver=6.1.6:2
media-editor.min.js:2:5065
Uncaught TypeError: wp.media.view is undefined
    <anonymous> http://localhost:8081/wp-includes/js/media-audiovideo.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-includes/js/media-audiovideo.min.js?ver=6.1.6:2
media-audiovideo.min.js:2:10628
Uncaught TypeError: wp.media.controller is undefined
    mediaWidgets http://localhost:8081/wp-admin/js/widgets/media-widgets.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-widgets.min.js?ver=6.1.6:2
media-widgets.min.js:2:101
Uncaught TypeError: wp.mediaWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:191
customize.php:191:1
Uncaught TypeError: wp.media.view is undefined
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-audio-widget.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-audio-widget.min.js?ver=6.1.6:2
media-audio-widget.min.js:2:33
Uncaught TypeError: wp.mediaWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:195
customize.php:195:1
Uncaught TypeError: a is undefined
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-image-widget.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-image-widget.min.js?ver=6.1.6:2
media-image-widget.min.js:2:35
Uncaught TypeError: wp.mediaWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:203
customize.php:203:1
Uncaught TypeError: wp.media.view is undefined
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-gallery-widget.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-gallery-widget.min.js?ver=6.1.6:2
media-gallery-widget.min.js:2:33
Uncaught TypeError: wp.mediaWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:211
customize.php:211:1
Uncaught TypeError: wp.media.view is undefined
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-video-widget.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/media-video-widget.min.js?ver=6.1.6:2
media-video-widget.min.js:2:33
Uncaught TypeError: wp.mediaWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:219
customize.php:219:1
Uncaught ReferenceError: Backbone is not defined
    textWidgets http://localhost:8081/wp-admin/js/widgets/text-widgets.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/text-widgets.min.js?ver=6.1.6:2
text-widgets.min.js:2:94
Uncaught TypeError: wp.textWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:227
customize.php:227:1
Uncaught ReferenceError: Backbone is not defined
    customHtmlWidgets http://localhost:8081/wp-admin/js/widgets/custom-html-widgets.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/widgets/custom-html-widgets.min.js?ver=6.1.6:2
custom-html-widgets.min.js:2:151
Uncaught TypeError: wp.customHtmlWidgets is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:236
customize.php:236:1
Uncaught TypeError: _ is undefined
    <anonymous> http://localhost:8081/wp-admin/load-scripts.php?c=1&load[chunk_0]=heartbeat,customize-base,customize-controls,customize-widgets,wp-autop,wp-block-serialization-default-parser,wp-html-entities,wp&load[chunk_1]=-shortcode&ver=6.1.6:6
    <anonymous> http://localhost:8081/wp-admin/load-scripts.php?c=1&load[chunk_0]=heartbeat,customize-base,customize-controls,customize-widgets,wp-autop,wp-block-serialization-default-parser,wp-html-entities,wp&load[chunk_1]=-shortcode&ver=6.1.6:6
load-scripts.php:6:8452
Uncaught ReferenceError: Backbone is not defined
    <anonymous> http://localhost:8081/wp-admin/js/customize-nav-menus.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/customize-nav-menus.min.js?ver=6.1.6:2
customize-nav-menus.min.js:2:772
Uncaught ReferenceError: Backbone is not defined
    <anonymous> http://localhost:8081/wp-includes/js/customize-models.js?ver=6.1.6:27
    <anonymous> http://localhost:8081/wp-includes/js/customize-models.js?ver=6.1.6:281
customize-models.js:27:2
Uncaught TypeError: wp.Backbone.View is undefined
    <anonymous> http://localhost:8081/wp-includes/js/customize-views.js?ver=6.1.6:24
    <anonymous> http://localhost:8081/wp-includes/js/customize-views.js?ver=6.1.6:202
customize-views.js:24:2
Uncaught ReferenceError: Backbone is not defined
    <anonymous> http://localhost:8081/wp-includes/js/mce-view.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-includes/js/mce-view.min.js?ver=6.1.6:2
mce-view.min.js:2:1737
Uncaught TypeError: g.template is not a function
    <anonymous> http://localhost:8081/wp-admin/js/updates.min.js?ver=6.1.6:2
    <anonymous> http://localhost:8081/wp-admin/js/updates.min.js?ver=6.1.6:2
updates.min.js:2:1711
Uncaught TypeError: e.Control is undefined
    <anonymous> http://localhost:8081/wp-content/themes/neve/assets/js/build/all/customizer-controls.js?ver=3.8.7:1
    <anonymous> http://localhost:8081/wp-content/themes/neve/assets/js/build/all/customizer-controls.js?ver=3.8.7:1
customizer-controls.js:1:10296
Uncaught TypeError: wp.customize.Control is undefined
    241 http://localhost:8081/wp-content/themes/neve/assets/apps/customizer-controls/build/controls.js?ver=72bcce46a1bed968052e1920f0359d00:1
    i http://localhost:8081/wp-content/themes/neve/assets/apps/customizer-controls/build/controls.js?ver=72bcce46a1bed968052e1920f0359d00:5
    a http://localhost:8081/wp-content/themes/neve/assets/apps/customizer-controls/build/controls.js?ver=72bcce46a1bed968052e1920f0359d00:5
    O http://localhost:8081/wp-content/themes/neve/assets/apps/customizer-controls/build/controls.js?ver=72bcce46a1bed968052e1920f0359d00:5
    <anonymous> http://localhost:8081/wp-content/themes/neve/assets/apps/customizer-controls/build/controls.js?ver=72bcce46a1bed968052e1920f0359d00:5
    <anonymous> http://localhost:8081/wp-content/themes/neve/assets/apps/customizer-controls/build/controls.js?ver=72bcce46a1bed968052e1920f0359d00:5
controls.js:1:818
Uncaught TypeError: _ is undefined
    <anonymous> http://localhost:8081/wp-admin/customize.php:6024
customize.php:6024:4
Uncaught TypeError: class heritage e.Control is not an object or null
    Le http://localhost:8081/wp-includes/js/dist/customize-widgets.min.js?ver=323c27f4fff5e87062f9:7
    Ue http://localhost:8081/wp-includes/js/dist/customize-widgets.min.js?ver=323c27f4fff5e87062f9:7
    <anonymous> http://localhost:8081/wp-admin/customize.php:2494
    n jQuery
    <anonymous> http://localhost:8081/wp-admin/customize.php:2493
customize-widgets.min.js:7:33485
XHRGET
http://localhost:8081/index.php?rest_route=/wp/v2/widget-types&context=edit&per_page=100&_locale=user
[HTTP/1.1 502 Bad Gateway 59ms]

GET
http://localhost:8081/favicon.ico
[HTTP/1.1 404 Not Found 0ms]

If I change the theme to the only other theme installed (the default = Twenty Twenty-Three that came with wordpress), then I can load the customize.php page without issue.

Step-by-step reproduction instructions

  1. Download and install Debian 10
  2. Install prereqs
sudo apt-get install wordpress nginx mariadb-server php-fpm
  1. Configure nginx server, do wordpress "5-minute install", etc
  2. wget Neve v3.8.7 and extract zip into wp-content/themes/
  3. Activate Theme
  4. Try to load /wp-admin/customize.php
  5. See (mostly) empty page (see screenshot below)

Screenshots, screen recording, code snippet or Help Scout ticket

ohchei9uko_000

Environment info

No response

Is the issue you are reporting a regression

No

maltfield commented 5 months ago

See also

maltfield commented 5 months ago

Attempting to load /wp-admin/site-health.php spits out the following errors in the WP WUI (WP_DEBUG is enabled)

Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/neve/htdocs/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91

The page is stuck on Results are still loading… indefinitely

preda-bogdan commented 5 months ago

@maltfield cc: @vytisbulkevicius

I created a local image with Debian 10, Nginx, PHP8.2 and WordPress 6.1.6 with the latest version of Neve 3.8.7 You can check the gist that I used to replicate this here: https://gist.github.com/preda-bogdan/b646c22c918788eaf696ca208ed40792

I could not replicate the issue. To me from looking at the logs it looks like some core JS files are not available like the Backbone framework that is used when loading controls. I suspect this is something related to the environment ( version of Wordpress used ) rather than something coming from the theme.

Also using Twenty Twenty-Three as baseline is not the best as the theme does not use Customizer since it relies on the Gutenberg editor as it is a FSE theme this might be tied to a specific type of Customizer Control.

The WordPress is downloaded via wget from wordpress.org same as with the theme.

Maybe the author can provide more input if it thinks I ommited something from checking this. Or maybe you have a way for me to replicate this locally.

Thank you!

maltfield commented 4 months ago

@preda-bogdan thanks for looking into this

I think an important difference here is that I'm installing wordpress from the package in the official debian repos. Perhaps this is an upstream bug with Debian, then.

To me from looking at the logs it looks like some core JS files are not available like the Backbone framework that is used when loading controls.

Can you provide more information? What "core JS" file(s) provides the "Backbone framework"? If I have a path/filename, then it would greatly help me (and others) in debugging.