vérifie si Gutenberg est actuellement utilisé

10

Comment puis-je vérifier si l'éditeur actuellement utilisé est Gutenberg dans un plugin WordPress?

J'en ai besoin parce que Gutenberg manque de post_submitbox_misc_actions . J'ai donc besoin d'une solution de secours qui ne sera utilisée que si l'éditeur actuel est Gutenberg.

    
posée NerdOfLinux 29.07.2018 - 18:48

3 réponses

7

Il y a une fonction is_gutenberg_page() qui sera présente lorsque vous activerez Gutenberg, vous pourrez donc vérifier:

if( function_exists( 'is_gutenberg_page' ) )

Ceci vérifiera uniquement si Gutenberg est activé et la fonction elle-même vérifiera si l'éditeur en cours est configuré pour charger Gutenberg. Ainsi, le code devient:

if( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() )

Bien sûr, cela doit être vérifié à partir des pages du panneau d’administration et lorsque les données internes sont prêtes à appeler la fonction. Ainsi, vous devrez effectuer la vérification à l'aide d'un crochet approprié . Par exemple, si vous cochez cette option à l'aide du crochet init , cela ne fonctionnera pas .

Gutenberg vérifie lui-même la fonction is_gutenberg_page() à partir de la fonction gutenberg_init() , qui est chargée à l'aide de replace_editor hook. Donc, replace_editor hook est un bon endroit pour faire cette vérification.

Toutefois, je suggérerais d'utiliser admin_enqueue_scripts pour effectuer le contrôle, car:

  1. admin_enqueue_scripts est le premier hook déclenché après le même is_gutenberg_page() check que Gutenberg se fabrique lui-même.

  2. En raison de la nature de Gutenberg, vous êtes plus susceptible de charger des scripts / styles externes à cette fin.

  3. admin_enqueue_scripts est un hook bien connu et est uniquement déclenché à partir des pages du panneau d'administration. Donc, le front-end n'en est pas affecté.

Exemple de code (testé):

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.
    }   
}
    
réponse donnée Fayaz 30.07.2018 - 16:40
1

has_blocks est le moyen de vérifier le contenu, mais notez également que si vous vérifiez simplement si l'écran de l'éditeur de blocs est utilisé dans la zone d'administration, vous pouvez effectuer une vérification comme celle-ci (pour prendre en compte à la fois la nouvelle éditeur de blocs et plugin Gutenberg):

if (is_admin()) {
    global $current_screen;
    if (!isset($current_screen)) {$current_screen = get_current_screen();}
    if ( ( method_exists($current_screen, 'is_block_editor') && $current_screen->is_block_editor() )
      || ( function_exists('is_gutenberg_page')) && is_gutenberg_page() ) ) {
        // DO SOMETHING HERE
    }
}
    
réponse donnée majick 13.11.2018 - 02:00
0

Gutenberg 3.6 a introduit des fonctions telles que has_blocks et has_block . Ils remplacent la fonction obsolète gutenberg_post_has_blocks .

Si has_blocks renvoie vrai, alors que Gutenberg a été utilisé lors de l'édition du message.

Vous pouvez utiliser has_blocks() sans paramètre si le $post global est déjà défini (pour une boucle semblable à une requête) ou vérifier le contenu de la publication directement avec has_blocks( $content )

    
réponse donnée Andrei 29.08.2018 - 11:22

Lire d'autres questions sur les étiquettes