Zur Suche springen Zur Navigation springen Zum Hauptinhalt springen Zum Footer springen

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.

Schulungen von kulturbanause

Intensive Trainings mit hohem Praxisbezug.

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);

Geschrieben von Robert Menzel

thumb

Robert arbeitet als Frontend-Developer und Web-Designer bei kulturbanause®. Zu seinen Aufgaben gehören die Gestaltung und die technische Umsetzung von Websites mit Photoshop, Illustrator, WordPress, PHP, HTML, CSS (Sass) und JavaScript (jQuery). Besonders gerne übernimmt er die Erstellung individueller und anspruchsvoller WordPress-Themes mit umfangreichen ineinandergreifenden Funktionen.

Feedback & Ergänzungen – 5 Kommentare

  1. Tommy
    schrieb am 09.12.2020 um 14:30 Uhr:

    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.

    Antworten
    • Robert Menzel (Autor)
      schrieb am 10.12.2020 um 09:25 Uhr:

      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

      Antworten
  2. Wolfgang
    schrieb am 26.02.2020 um 17:33 Uhr:

    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?

    Antworten
    • Robert Menzel (Autor)
      schrieb am 27.02.2020 um 16:06 Uhr:

      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

      Antworten
  3. Drivingralle
    schrieb am 27.01.2020 um 13:12 Uhr:

    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

    Antworten

Schreibe einen Kommentar zu Wolfgang Antworten abbrechen

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →