it-swarm.com.de

überprüfen Sie, ob Gutenberg derzeit verwendet wird

Wie kann ich überprüfen, ob der aktuell verwendete Editor Gutenberg in einem WordPress-Plugin ist?

Ich brauche das, weil Gutenberg post_submitbox_misc_actions fehlt, also brauche ich einen Fallback, der nur verwendet wird, wenn der aktuelle Editor Gutenberg ist.

12
NerdOfLinux

Es gibt eine is_gutenberg_page() -Funktion, die beim Aktivieren von Gutenberg vorhanden sein wird. Sie können also Folgendes überprüfen:

if( function_exists( 'is_gutenberg_page' ) )

Dies überprüft nur, ob Gutenberg aktiviert ist, und die Funktion selbst überprüft, ob der aktuelle Editor so eingestellt ist, dass Gutenberg geladen wird. So wird der CODE:

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

Dies muss natürlich auf den Seiten des Admin-Panels überprüft werden und wenn die internen Daten bereit sind, die Funktion aufzurufen. Also Sie müssen die Prüfung mit einem geeigneten Haken tun . Beispiel: Wenn Sie dies mitinithook überprüfen, funktioniert nicht. .

Gutenberg selbst überprüft die Funktion is_gutenberg_page() aus der Funktion gutenberg_init(), die mit dem Hook replace_editor geladen wird. replace_editor hook ist also ein guter Ort, um diese Prüfung durchzuführen.

Ich würde jedoch die Verwendung von admin_enqueue_scripts für die Überprüfung vorschlagen, da:

  1. admin_enqueue_scripts ist der erste Haken, der nach dem gleichen is_gutenberg_page()-Check ausgelöst wird, den Gutenberg selbst macht.

  2. Aufgrund der Natur von Gutenberg laden Sie mit größerer Wahrscheinlichkeit externe Skripte/Stile für Ihren Zweck.

  3. admin_enqueue_scripts ist ein bekannter Hook und wird nur von Admin-Panel-Seiten ausgelöst. Das Frontend ist also nicht davon betroffen.

Beispielcode (getestet):

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.
    }   
}
9
Fayaz

Die Funktion is_gutenberg_page stammt aus dem Gutenberg-Plugin, während die Methode is_block_editor ab 5.0 verfügbar ist. Diese Funktion kombiniert beide Funktionen zu einer einzigen Prüffunktion.

Der folgende Code stammt aus dem Freemius SDK , der dem Team zur Verfügung steht:

function is_gutenberg_page() {
    if ( function_exists( 'is_gutenberg_page' ) &&
            is_gutenberg_page()
    ) {
        // The Gutenberg plugin is on.
        return true;
    }
    $current_screen = get_current_screen();
    if ( method_exists( $current_screen, 'is_block_editor' ) &&
            $current_screen->is_block_editor()
    ) {
        // Gutenberg page on 5+.
        return true;
    }
    return false;
}
5
Benjamin Intal
  1. Gutenberg wurde in WordPress 5.0 integriert und jetzt können Sie mit der Funktion use_block_editor_for_post prüfen.

    if(use_block_editor_for_post($post)){
      //Block editor is active for this post.
    }
    
  2. Wenn Sie einen neuen Beitrag erstellen, können Sie alternativ die Funktion use_block_editor_for_post_type verwenden, um zu überprüfen, ob für diesen Beitragstyp Gutenberg aktiv ist.

    if(use_block_editor_for_post_type($postType)){
    //Gutenberg is active.
    }
    
3
Ankit

Mit has_blocks können Sie den Inhalt überprüfen. Wenn Sie jedoch nur prüfen, ob der Blockeditor-Bildschirm im Administratorbereich verwendet wird, können Sie dies überprüfen (um sowohl den neuen Blockeditor als auch das Gutenberg-Plugin zu berücksichtigen) ):

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
    }
}
2
majick

Gutenberg 3.6 Funktionen wie has_blocks und has_block eingeführt. Sie ersetzen die veraltete Funktion gutenberg_post_has_blocks.

Wenn has_blocks true zurückgibt, wurde beim Bearbeiten des Beitrags Gutenberg verwendet.

Sie können entweder has_blocks() ohne Parameter verwenden, wenn der $post global bereits festgelegt ist (für so etwas wie eine Abfrageschleife), oder den Inhalt des Posts direkt mit has_blocks( $content ) überprüfen.

1
Andrei