WordPress Block Editor (Gutenberg) für Custom Post Types aktivieren
Der WordPress Block Editor (Gutenberg) ist für Custom Post Types nicht automatisch aktiviert. Mit geringen Anpassungen am Code kann er pro Post Type eingeschaltet werden.

Seit WordPress 5.0 ist der Block Editor (Gutenberg) der Standard-Editor für Beiträge und Seiten in WordPress. Die Umstellung vom alten WYSIWYG-Editor (TinyMCE) erfolgte mit dem Update auf WordPress 5.0 für diese Beitrags-Typen automatisch. Selbst erstellte Beitrags-Typen (Custom Post Types) nutzen jedoch nicht automatisch den neuen Editor.
Block Editor für eigene Custom Post Types aktivieren
Über »register_post_type()
« könnt ihr eure eigenen Custom Post Types anlegen. Möchtet ihr nun den Block Editor (Gutenberg) für diesen Beitrags-Typen verwenden, achtet darauf, dass ihr in den Argumenten »$args
« die Angabe »show_in_rest
« auf true
setzt. Damit wird dieser Beitrags-Typ in der Rest-API von WordPress mit berücksichtigt, was ausschlaggebend dafür ist, dass der Block Editor arbeiten kann. Der Block Editor wird nun für diesen Beitrags-Typen verwendet. Wenn Gutenberg deaktiviert sein soll, setzt den Wert auf false
.
function kb_custom_post_type() {
...
$args = array(
...
'show_in_rest' => true,
...
);
register_post_type( 'YOUR-CUSTOM-POST-TYPE', $args );
}
add_action( 'init', 'kb_custom_post_type', 0 );
Block Editor für Custom Post Types aus Plugins aktivieren
Viele WordPress-Plugins liefern eigene Custom Post Types, in denen ihr nicht über register_post_type()
die Argumente verändern könnt, um die Update-Fähigkeit der Plugins nicht einzuschränken. Um auch für diese Beitrags-Typen den Block Editor zu aktivieren, könnt ihr den Filter »use_block_editor_for_post_type
« verwenden. Das folgende Snippet könnt ihr einfach in die functions.php
oder in ein seitenspezifisches Plugin schreiben und mit dem Namen eures Beitrags-Typen versehen. Im Beispiel aktivieren wir den Block Editor (Gutenberg) für die Produkte eines WooCommerce-Shops.
function kb_activate_block_editor($can_edit, $post_type){
if($post_type == 'product'){
$can_edit = true;
}
return $can_edit;
}
add_filter('use_block_editor_for_post_type', 'kb_activate_block_editor', 10, 2);
Hallo Robert
Im Prinzip sollte doch Gutenberg generell über das Plugin Disable Gutenberg für alle Beiträge aktiviert werden können. Doch da geschieht nichts, wenn ich dieses Plugin konfiguriere.
Wir nutzen ein Theme welches angeblich Gutenberg ready sein soll. Bei dem default post Menü sehen wir Gutenberg. Soweit alles bestens also. Bei dem Menü „Recipe Posts“ (wird vom Theme durch das Core Plugin angelegt) ist allerdings nur der Classic Editor sichtbar. Taxonomie ist „recipe“.
Wir haben deshalb folgendes ausprobiert:
function kb_activate_block_editor($can_edit, $post_type){
if($post_type == ‚recipe‘){
$can_edit = true;
}
return $can_edit;
}
add_filter(‚use_block_editor_for_post_type‘, ‚kb_activate_block_editor‘, 10, 2);
Wir haben die Prio auch mal auf 99999 gesetzt, ohne Erfolg. Hast du eine Idee wo wir ansetzen können? Die Entwickler vom Theme drücken sich leider.
Hallo Tommy,
in der if-Abfrage innerhalb der Funktion muss der Name des Custom Post Types angegeben werden und nicht der Name der Taxonomie.
Sollte es dann immer noch nicht funktionieren, liegt es mit Sicherheit am Theme. Hier kann ich dann leider keine konkrete Auskunft geben.
Viele Grüße
Robert
Hallo Robert,
das hat bei mir leider nicht geklappt: Ich versuche es mit „el_events“ (Das ist der CPT „Event List“ von mibuthu.) und folgendem Code:
add_action(‚pre_get_posts‘,’kb_add_post_types_to_loop‘);
// Gutenberg um custom post type erweitern
function kb_activate_block_editor($can_edit, $post_type){
if($post_type == ‚el_events‘){
$can_edit = true;
}
return $can_edit;
}
add_filter(‚use_block_editor_for_post_type‘, ‚kb_activate_block_editor‘, 10, 2);
Kann es sein, dass das Verfahren nicht bei allen CPTs funktioniert?
Hallo Wolfgang,
ich habe leider keine Erfahrungen mit dem »Event List«-Plugin und kann daher nicht einschätzen ob es mit dem Gutenberg kompatibel ist.
Eventuell kann eine Veränderung der Priorität im Filter weiterhelfen: add_filter(‚use_block_editor_for_post_type‘, ‚kb_activate_block_editor‘, 999, 2);
Viele Grüße
Robert
Nicht alle CPTs sind für die Öffentlichkeit bestimmt sollen aber trotzdem mittels Gutenberg bearbeitet werden.
Wenn der CPT also nur für Benutzer mit den Rechten zum bearbeiten in der REST-API verfügbar sein soll kann man dies über eine Bedingung beim Registrieren erreichen z.B.:
’show_in_rest‘ => current_user_can( ‚edit_posts‘ ),
Wobei „edit_posts“ natürlich auf die eigenen Berechtigungen angepasst werden muss.
Es grüßt
derRALF