Understanding SHORTINIT with WordPress 5

Question

What I am trying to achieve

I am looking at using WordPress decoupled, and most tutorials and guides go into detail on using the Rest API. Recently, I discovered the SHORTINIT option to load a very minimal WordPress instance. There is next to no documentation, and very few questions about its use, however I am interested in making use of it.

What have I tried

So far, I have setup a simple test php file in the root directory:

define('WP_DEBUG', true);
define('WP_DEBUG_DISPLAY', true);
//define('DOING_AJAX', true);
define('SHORTINIT', true);

require(dirname( __FILE__ ) . '/wp-load.php');

require( ABSPATH . WPINC . '/post.php');

die(json_encode(get_posts(array(
   'numberposts' => 10,
   'post_type' => 'post'
))));

Which failed because I can’t access class WP_Query. After reading a few scattered examples, I gradually added more requires but nothing seemed to work.

I have now taken a copy of wp-settings and removed things like class-wp-rest*.php or references to the themes. The intention being to leave myself with the absolute minimum core, with enough functionality to obtain the data I need (posts, custom fields). My code now runs, and takes 1/3 of the time to load my posts compared to the /wp-json/wp/v2/posts endpoint.

My Question

I am pre-empting people telling me just to use the REST API, but I would like to know if there is any documentation or examples for creating an endpoint URL which makes use of the SHORTINIT, explaining which core components I need.

0
, , Alexander Holsgrove 3 years 2020-04-01T12:52:45-05:00 0 Answers 101 views 0

Leave an answer

Browse
Browse