Le nouvel éditeur appelé Gutenberg est ici en tant que plugin dans 4.9 et en tant que fonctionnalité principale appelée Block Editor, dans 5.0. En ce qui concerne cela, il est souvent nécessaire de déterminer par programme quel éditeur est utilisé pour éditer un post ou une page dans la console du site. Comment faire?
Mise à jour: Il existe plusieurs réponses obsolètes à une question similaire:
gutenberg_post_has_blocks()
- cette fonction n'existe que dans le plugin Gutenberg, et non dans la version 5.0 Core.is_gutenberg_page()
- idemthe_gutenberg_project()
- idemhas_blocks()
- ne fonctionne pas (renvoie false) lorsque Classic Editor est activé et que son option "Editeur par défaut pour tous les utilisateurs" = "Editeur de blocs"Call to undefined function get_current_screen()
Alors, avant de commenter cette question et cette réponse, prenez un travail pour vérifier ce que vous proposez. Vérifiez-le maintenant, avec la version 4.9 et actuelle de WordPress, ainsi que toutes les combinaisons possibles entre Classic Editor et Gutenberg/Block Editor. Je serai heureux de discuter de la solution testée, pas de liens vers quelque chose.
Il y a plusieurs variantes:
Toutes les variantes mentionnées peuvent être traitées avec le code suivant:
/**
* 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 renvoie true si l'éditeur de blocs est actif de quelque manière que ce soit et false - dans le cas où l'éditeur classique est présent. Cette fonction ne doit être utilisée qu'après le déclenchement de l'action plugins_loaded
.
P.S. À cause de la publication de la version 1.2 du plugin Classic Editor, le code est mis à jour, car les options classic-editor-replace
prennent désormais les valeurs non replace
et no-replace
, mais classic
et block
.
Vous pouvez utiliser
add_action( 'enqueue_block_editor_assets', 'your_function_name' );
qui est déclenché uniquement lors de l'édition de contenu avec Gutenberg.