admin管理员组文章数量:1130349
The new editor called Gutenberg is here as plugin in 4.9, and as core functionality called Block Editor, in 5.0. Regarding to it, it is often needed to determine programmatically which editor is used to edit post or page in the site console. How to do it?
Update: There are number of outdated answers to similar question:
gutenberg_post_has_blocks()- this function exists only in Gutenberg plugin, and not in 5.0 Coreis_gutenberg_page()- the samethe_gutenberg_project()- the samehas_blocks()- does not work (returns false) when Classic Editor is on and its option "Default editor for all users" = "Block Editor"- answer simply produces fatal error
Call to undefined function get_current_screen()
So, before commenting this question and answer, please take a work to check what do you propose. Check it now, with 4.9 and current version of WordPress, and all possible combinations of Classic Editor and Gutenberg/Block Editor. I will be happy to discuss tested solution, not links to something.
The new editor called Gutenberg is here as plugin in 4.9, and as core functionality called Block Editor, in 5.0. Regarding to it, it is often needed to determine programmatically which editor is used to edit post or page in the site console. How to do it?
Update: There are number of outdated answers to similar question:
gutenberg_post_has_blocks()- this function exists only in Gutenberg plugin, and not in 5.0 Coreis_gutenberg_page()- the samethe_gutenberg_project()- the samehas_blocks()- does not work (returns false) when Classic Editor is on and its option "Default editor for all users" = "Block Editor"- answer simply produces fatal error
Call to undefined function get_current_screen()
So, before commenting this question and answer, please take a work to check what do you propose. Check it now, with 4.9 and current version of WordPress, and all possible combinations of Classic Editor and Gutenberg/Block Editor. I will be happy to discuss tested solution, not links to something.
Share Improve this question edited Jan 3, 2019 at 8:41 KAGG Design asked Nov 30, 2018 at 10:01 KAGG DesignKAGG Design 1,86210 silver badges15 bronze badges 8 | Show 3 more comments2 Answers
Reset to default 13There are several variants:
- WordPress 4.9, Gutenberg plugin is not active
- WordPress 4.9, Gutenberg plugin is active
- WordPress 5.0, Block Editor by default
- WordPress 5.0, Classic Editor plugin is active
- WordPress 5.0, Classic Editor plugin is active, but in site console in “Settings > Writing” the option “Use the Block editor by default…” is selected
All the mentioned variants can be processed by the following code:
/**
* Check if Block Editor is active.
* Must only be used after plugins_loaded action is fired.
*
* @return bool
*/
function is_active() {
// Gutenberg plugin is installed and activated.
$gutenberg = ! ( false === has_filter( 'replace_editor', 'gutenberg_init' ) );
// Block editor since 5.0.
$block_editor = version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' );
if ( ! $gutenberg && ! $block_editor ) {
return false;
}
if ( is_classic_editor_plugin_active() ) {
$editor_option = get_option( 'classic-editor-replace' );
$block_editor_active = array( 'no-replace', 'block' );
return in_array( $editor_option, $block_editor_active, true );
}
return true;
}
/**
* Check if Classic Editor plugin is active.
*
* @return bool
*/
function is_classic_editor_plugin_active() {
if ( ! function_exists( 'is_plugin_active' ) ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
return true;
}
return false;
}
Function returns true if block editor is active by any means, and false – in the case if classic editor is here. This function must only be used after plugins_loaded action is fired.
P.S. Due release of version 1.2 of Classic Editor plugin, code is updated, as classic-editor-replace options now takes values not replace and no-replace, but classic and block.
You can use
add_action( 'enqueue_block_editor_assets', 'your_function_name' );
which is only fired when editing content with Gutenberg.
The new editor called Gutenberg is here as plugin in 4.9, and as core functionality called Block Editor, in 5.0. Regarding to it, it is often needed to determine programmatically which editor is used to edit post or page in the site console. How to do it?
Update: There are number of outdated answers to similar question:
gutenberg_post_has_blocks()- this function exists only in Gutenberg plugin, and not in 5.0 Coreis_gutenberg_page()- the samethe_gutenberg_project()- the samehas_blocks()- does not work (returns false) when Classic Editor is on and its option "Default editor for all users" = "Block Editor"- answer simply produces fatal error
Call to undefined function get_current_screen()
So, before commenting this question and answer, please take a work to check what do you propose. Check it now, with 4.9 and current version of WordPress, and all possible combinations of Classic Editor and Gutenberg/Block Editor. I will be happy to discuss tested solution, not links to something.
The new editor called Gutenberg is here as plugin in 4.9, and as core functionality called Block Editor, in 5.0. Regarding to it, it is often needed to determine programmatically which editor is used to edit post or page in the site console. How to do it?
Update: There are number of outdated answers to similar question:
gutenberg_post_has_blocks()- this function exists only in Gutenberg plugin, and not in 5.0 Coreis_gutenberg_page()- the samethe_gutenberg_project()- the samehas_blocks()- does not work (returns false) when Classic Editor is on and its option "Default editor for all users" = "Block Editor"- answer simply produces fatal error
Call to undefined function get_current_screen()
So, before commenting this question and answer, please take a work to check what do you propose. Check it now, with 4.9 and current version of WordPress, and all possible combinations of Classic Editor and Gutenberg/Block Editor. I will be happy to discuss tested solution, not links to something.
Share Improve this question edited Jan 3, 2019 at 8:41 KAGG Design asked Nov 30, 2018 at 10:01 KAGG DesignKAGG Design 1,86210 silver badges15 bronze badges 8- add_action( 'admin_enqueue_scripts', 'wpse_gutenberg_editor_test' ); function wpse_gutenberg_editor_test() { if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) { // your gutenberg editor related CODE here } else { // this is not gutenberg. // this may not even be any editor, you need to check the screen. } } – vikrant zilpe Commented Nov 30, 2018 at 11:06
- please check this :artiss.blog/2018/09/detecting-per-post-use-of-gutenberg – vikrant zilpe Commented Nov 30, 2018 at 11:08
- and this davidsword.ca/development/… – vikrant zilpe Commented Nov 30, 2018 at 11:09
-
2
@vikrantzilpe please do not rely to an outdated information. It is better to test what you are writing. For example,
the_gutenberg_project()function exists only in Gutenberg plugin, but not in the WP 5.0 Core. – KAGG Design Commented Nov 30, 2018 at 11:23 - 3 Possible duplicate of check if Gutenberg is currently in use – T.Todua Commented Jan 2, 2019 at 9:05
2 Answers
Reset to default 13There are several variants:
- WordPress 4.9, Gutenberg plugin is not active
- WordPress 4.9, Gutenberg plugin is active
- WordPress 5.0, Block Editor by default
- WordPress 5.0, Classic Editor plugin is active
- WordPress 5.0, Classic Editor plugin is active, but in site console in “Settings > Writing” the option “Use the Block editor by default…” is selected
All the mentioned variants can be processed by the following code:
/**
* Check if Block Editor is active.
* Must only be used after plugins_loaded action is fired.
*
* @return bool
*/
function is_active() {
// Gutenberg plugin is installed and activated.
$gutenberg = ! ( false === has_filter( 'replace_editor', 'gutenberg_init' ) );
// Block editor since 5.0.
$block_editor = version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' );
if ( ! $gutenberg && ! $block_editor ) {
return false;
}
if ( is_classic_editor_plugin_active() ) {
$editor_option = get_option( 'classic-editor-replace' );
$block_editor_active = array( 'no-replace', 'block' );
return in_array( $editor_option, $block_editor_active, true );
}
return true;
}
/**
* Check if Classic Editor plugin is active.
*
* @return bool
*/
function is_classic_editor_plugin_active() {
if ( ! function_exists( 'is_plugin_active' ) ) {
include_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if ( is_plugin_active( 'classic-editor/classic-editor.php' ) ) {
return true;
}
return false;
}
Function returns true if block editor is active by any means, and false – in the case if classic editor is here. This function must only be used after plugins_loaded action is fired.
P.S. Due release of version 1.2 of Classic Editor plugin, code is updated, as classic-editor-replace options now takes values not replace and no-replace, but classic and block.
You can use
add_action( 'enqueue_block_editor_assets', 'your_function_name' );
which is only fired when editing content with Gutenberg.
本文标签: block editorHow to detect the usage of Gutenberg
版权声明:本文标题:block editor - How to detect the usage of Gutenberg 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/questions/1749049369a2308373.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


the_gutenberg_project()function exists only in Gutenberg plugin, but not in the WP 5.0 Core. – KAGG Design Commented Nov 30, 2018 at 11:23