web-dev-qa-db-fra.com

Comment détecter l'usage de Gutenberg

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:

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.

8
KAGG Design

Il y a plusieurs variantes:

  • WordPress 4.9, le plugin Gutenberg n'est pas actif
  • WordPress 4.9, le plugin Gutenberg est actif
  • WordPress 5.0, éditeur de blocs par défaut
  • WordPress 5.0, le plugin Classic Editor est actif
  • WordPress 5.0, le plugin Classic Editor est actif, mais dans la console du site, dans "Paramètres> Écriture", l'option "Utiliser l'éditeur de blocs par défaut…" est sélectionnée.

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.

11
KAGG Design

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.

1
Marc