[wp-trac] [WordPress Trac] #55489: Defining SHORTINIT creates an error when index.php is loaded

WordPress Trac noreply at wordpress.org
Mon May 23 20:35:05 UTC 2022

#55489: Defining SHORTINIT creates an error when index.php is loaded
 Reporter:  gerendo                            |       Owner:  (none)
     Type:  defect (bug)                       |      Status:  new
 Priority:  normal                             |   Milestone:  Awaiting
                                               |  Review
Component:  Bootstrap/Load                     |     Version:  5.9.2
 Severity:  normal                             |  Resolution:
 Keywords:  has-screenshots close 2nd-opinion  |     Focuses:  rest-api

Comment (by johnjamesjacoby):

 Hello everyone! 👋

 Please correct me if I am mistaken, but I believe the error message that
 @gerendo is seeing is not specific to the ''REST API'' using `SHORTINIT` –
 rather, I believe this error message can be expected to be thrown on
 ''every'' non-`wp-admin` request. 😬

 (`wp-admin/profile.php` – for example sake – shows a different missing

 Fatal error: Uncaught Error: Call to undefined function
 is_customize_preview() in wp-admin/includes/admin-filters.php:56
 Stack trace:
 #0 wp-admin/includes/admin.php(20)
 #1 wp-admin/admin.php(97)
 #2 wp-admin/user-edit.php(10)
 #3 wp-admin/profile.php(18)


 I'd like to politely suggest to @gerendo that he simply not use
 `SHORTINIT` inside of `wp-config.php` 🥷

 While `wp-config.php` is ''generally'' where WordPress documentation all
 over the web recommends that developers put their configuration constants,
 `SHORTINIT` is quite unique in that its usage should typically be
 ''outside'' of the ''global'' WordPress configuration, so that WordPress
 itself (and all of its innards) continue to work as intended (including
 the REST API) – not-much ''inside'' of WordPress is coded with `SHORTINIT`
 support directly in mind.

 When using `SHORTINIT` you are basically "on your own" when it comes to
 including & requiring all of the files you need to avoid PHP fatal errors
 while also achieving your goal of loading fewer files to keep your memory
 usage low. To do this, traditionally, you would start with what is in the
 root `index.php`, `wp-blog-header.php`, `wp-settings.php`, etc... cherry-
 picking the parts of those files that you do-or-do-not need.

 As you've identified, this is not very straightforward 😅 but I do think
 it is a fun challenge and can be a rewarding exercise, especially on long-
 running requests that do not require plugins or themes to be loaded, need
 to avoid `wp_magic_quotes()`, run a custom application, or something even
 more fun 🛝

 See also: https://wordpress.stackexchange.com/a/28347/3588


 To @SergeyBiryukov, @TimothyBlynJacobs, and @sabernhardt, I think it would
 be OK to close this ticket, as it's not quite as accurate of a report as
 maybe it could be. I would personally like to see some version of an
 improved `SHORTINIT` experience (autoloading or otherwise) but I also
 think that's a bit outside the scope of what's being discussed here.

 Thoughts? 🧐

Ticket URL: <https://core.trac.wordpress.org/ticket/55489#comment:5>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list