[wp-meta] [Making WordPress.org] #4228: Gutenberg theme: Remove reliance upon the plugin
Making WordPress.org
noreply at wordpress.org
Thu Mar 21 14:26:12 UTC 2019
#4228: Gutenberg theme: Remove reliance upon the plugin
---------------------+---------------------
Reporter: dd32 | Owner: (none)
Type: task | Status: new
Priority: high | Milestone:
Component: General | Resolution:
Keywords: |
---------------------+---------------------
Comment (by TJNowell):
I got frontenberg working with the internal block editor but it required
some changes
First, I use this to figure out if gutenberg is present and active:
{{{
if ( ! function_exists('gutenberg_editor_scripts_and_styles') ) {
}}}
If so, it:
- conditionally enqueues a selection of scripts such as the hearbeat
script
- polyfills `get_current_screen` and makes it return `''`
- enqueues `gutenberg_editor_scripts_and_styles`
If not, it:
- calls the WP 5 enqueue assets action
- adds `frontenberg_load_wp5_editor` to `template_redirect`, where it
then does the same job that `wp-admin/edit-form-blocks.php` does
Before the editor was merged, it was enough to enqueue the GB editor, make
sure the relevant HTML was added, and that
`gutenberg_editor_scripts_and_styles` was added on the enqueue scripts
hook.
`gutenberg_editor_scripts_and_styles` called functions that took care of
instantiating the editor, but when it was merged all that nice hookable
function code got smushed into `wp-admin/edit-form-blocks.php`, and a lot
of flexibility and power was lost. I tried including that file directly
but ran into lots of issues. Frontenberg ran fine without including any WP
Admin files before this, and to get that file working would require a lot
of hacks, and compromises, some of which I could not work around.
So, I created `frontenberg_load_wp5_editor`. I started by copying the
contents of that file into a function and running it on the
`template_direct` hook. I made enough changes to get it working, then made
additional changes based on Frontenbergs specific use case. E.g. removing
the metabox setup code ( metaboxes don't work anyway ), and the post
locking ( why figure out if the post is locked when post locking makes the
frontend unusable? Force it to unlocked ).
I also added a number of supporting functions that replace WP 5 functions
used in that file, so that I can return static values, or do non-WP Admin
things. This meant I didn't have to load in more WP Admin files
Finally, I adjusted the JS with a basic check:
{{{
var fbeditor = window._wpLoadBlockEditor;
if ( window._wpLoadGutenbergEditor ) {
fbeditor = window._wpLoadGutenbergEditor;
}
}}}
`fbeditor` then gets used to adjust a promise to intercept and cancel any
`PUT` `POST` `DELETE` or `PATCH` requests so that they never get sent.
Full implementation here:
https://github.com/tomjn/Frontenberg/blob/master/functions.php
--
Ticket URL: <https://meta.trac.wordpress.org/ticket/4228#comment:6>
Making WordPress.org <https://meta.trac.wordpress.org/>
Making WordPress.org
More information about the wp-meta
mailing list