Es ist über ein Jahr her seit dem großen WordPress-Launch von Gutenberg, dem neuen Editor. Mir scheint, dass die meiste Kontroverse darum herum abgeklungen ist. Es gab genug Zeit, dass die Benutzerfreundlichkeit und Zugänglichkeit davon verbessert wurden, und die Leute sehen das Potenzial viel klarer. Es gibt kein Zurück mehr.
Ich stoße auf Artikel wie den von Haris Zulfiqar, der sagt, er setzt darauf, und Nick Hamze, der sagt, dass Blöcke für die nächste Generation sind.
Obwohl ich denke, dass es noch Ecken und Kanten gibt (wie z. B. warum kann ich keine Liste in ein Blockquote einfügen? Warum kann ich einem Link keine Klasse hinzufügen? Warum kann ich nicht per Pfeiltaste durch den Block-Chooser navigieren?), bin ich insgesamt ein großer Fan. Und das nicht mehr nur konzeptionell. Ich habe es zu einem meiner Ziele für 2020 gemacht, CSS-Tricks auf Gutenberg umzustellen, und so habe ich mich gleich im Januar darum gekümmert.
Wir hatten bereits einen Fuß in der Tür
Wir hatten schon ein wenig Erfahrung mit Gutenberg gesammelt, da wir bereits die Erstellung von Newsletter-Beiträgen auf den neuen Editor umgestellt hatten. Unsere Newsletter sind hier auf CSS-Tricks ein Custom Post Type, die unter öffentlichen URLs veröffentlicht werden, einen eigenen RSS-Feed haben und von MailChimp versendet werden, das diesen RSS-Feed abruft und liest.

Wir konnten Gutenberg für Newsletter einfach über das Plugin Gutenberg Ramp aktivieren. Das funktioniert gut für Custom Post Types und Beiträge mit einzelnen IDs, aber ich wollte Gutenberg *nur für neue Inhalte* aktivieren. Ich habe am Ende das Plugin "monkey-patched". Hier ist ein Pull Request, falls jemand dort der Meinung ist, dass es eine gute Idee ist.
Das war mir wichtig, da wir Zehntausende von alten Beiträgen haben, die mit dem alten Editor erstellt wurden, und auch wenn Gutenberg sie nicht verunstaltet, wenn wir sie zum Bearbeiten öffnen, ist die Editor-Erfahrung, die es für sie bietet, nicht so gut wie die des "klassischen" Editors (z. B. haben wir spezielle Buttons für unsere speziellen Code-Blöcke und Ähnliches).
Umgang mit älteren Inhalten
Was wirklich großartig wäre, ist, wenn Gutenberg alte Beiträge beim Öffnen in richtige Blöcke umwandeln würde, aber das fühlt sich im Moment wie ein Traum an. Es müsste das HTML parsen, identifizieren, welche Chunks wie Blöcke aussehen, identifizieren, *welcher* Block am sinnvollsten ist, einschließlich unserer *benutzerdefinierten* Blöcke, die am wichtigsten sind, und zwar *wirklich korrekt* und auf eine nicht zerbrechliche Weise.
Vorerst werden alte Inhalte einfach mit dem alten Editor bearbeitet. Es gibt nicht einmal eine einfache Möglichkeit, Gutenberg für einen einzelnen Beitrag aus dem Editor heraus zu aktivieren. (Ich könnte Hardcode-Werte in die Gutenberg Ramp-Nutzung einfügen, aber das ist etwas mühsam.)

Ich befürchte ein wenig, dass der alte Editor wirklich verfallen wird. Zum Beispiel ist einer der Hauptgründe, warum ich damit angefangen habe, dass auf dieser Seite der alte Editor zufällig zum Ende der Seite gescrollt hat. Ich kann nicht im Leben herausfinden, warum, aber das macht das Verfassen für mich unangenehm. Nur ein kleiner Papier schnittfehler, der mich dazu veranlasste, auf die Editor-Erfahrung umzusteigen, die aktiv entwickelt wird.
Aber selbst wenn der alte Editor wirklich schlecht wird, ist das einfache Aktivieren von Gutenberg für alles nicht so schlimm. Alle alten Inhalte werden einfach in einem großen "klassischen" Block sein und in Ordnung sein.
Also, kurz gesagt – es funktioniert!
Das Aktivieren von Gutenberg für neue Beiträge war eine kleine Herausforderung für sich, aber es ist für uns eingeschaltet und wir erstellen alle neuen Inhalte darin. Ich spreche hier nur für mich, aber OMG, ich liebe es so sehr. Es ist ein so massives Upgrade für das Schreiben von Inhalten, dass ich ein wenig davon besessen bin. Das Team ist auch glücklich.

Erstellen von benutzerdefinierten Blöcken
Schauen Sie sich diesen schicken Textblock an, den wir haben

Man könnte denken, oh cool, eine Gelegenheit für einen benutzerdefinierten Block. Heck, wir haben sogar das Erlernen und Erstellen von Gutenberg-Blöcken in einer ganzen großen Serie behandelt. Aber das bringt eine ziemlich relevante Situation mit sich: wann man *keinen* Block bauen sollte. Das Einzige, was an *diesem* Block einzigartig ist, ist, dass er einen speziellen Klassennamen hat, den unser CSS zur Formatierung dieses Blocks verwendet. Das ist alles. Das Hinzufügen eines Klassennamens ist eine integrierte Funktion jedes Blocks, daher ist ein benutzerdefinierter Block hier wirklich nicht notwendig.

Tatsächlich können wir noch einen Schritt weiter gehen und einen Textblock mit dieser genauen Klasse zu einem "wiederverwendbaren Block" machen, damit wir uns diesen Klassennamen nicht einmal merken oder eingeben müssen. Nachdem ich einen Textblock mit dieser Klasse erstellt habe, wähle ich im Kebab-Menü "In wiederverwendbaren Block konvertieren" und nun ist er für immer als wiederverwendbarer Block gespeichert.

Wir nutzen ihn bereits für einige andere Dinge, wie unseren "Artikelserien"-Block (ein <h4> und <ol> mit einem speziellen <div>-mit-Klasse-Wrapper) und Fußnotenblöcke und dergleichen.
Aber wir brauchen tatsächlich auch einige benutzerdefinierte Blöcke, und dafür habe ich create-guten-block verwendet, um ein spezielles Plugin¹ zu erstellen. Einer, der für uns megawichtig ist, sind Codeblöcke. Es gibt bereits einen nativen Block für Codeblöcke. Er setzt den Code im Wesentlichen in ein <pre>-Tag, und der Inhalt von Gutenberg wird standardmäßig bereits escaped.
Unser schicker Codeblock ermöglicht es uns, die Sprache auszuwählen, bestimmte Zeilen hervorzuheben und benutzerdefinierte Labels bereitzustellen. Dies war in unserem alten Editor über HTML-Attribute möglich, sodass dieser Block lediglich eine schöne Benutzeroberfläche für all das ist.

Dieser Block ist so spezifisch für CSS-Tricks, dass es keinen Sinn ergibt, ihn als Open Source zu veröffentlichen. Aber es gibt einen anderen Block, den ich erstellt habe und der Open Source ist, und das ist der CodePen Embed Block. Ich habe darüber geschrieben auf dem CodePen-Blog.
Er ermöglicht es Ihnen, eine CodePen-URL einzufügen, und sie verwandelt sich in einen CodePen-Embed. oEmbed macht das standardmäßig bereits, aber mit diesem Plugin können Sie alles steuern, wie Höhe, Thema und Standard-Tabs.

Es ist ziemlich genial, die eingebetteten Pens tatsächlich während der Erstellung zu sehen!
Ungelöste Herausforderungen
Die größte Herausforderung ist derzeit die Handhabung von Bildern. Im alten Editor hatten wir ein sehr, sehr schickes Setup mit Cloudinary integriert. Die Bilder werden automatisch nach Cloudinary hochgeladen, Breakpoints werden programmatisch festgelegt, mehrere Größen werden erstellt, eine responsive Bildsyntax wird erstellt, und was im HTML landet, ist eine perfekte responsive Bildsyntax mit den von Cloudinary gehosteten Bildern. Dies hat uns den Vorteil verschafft, auf einem CDN zu sein und die Bilder im bestmöglichen Format zu liefern.
Nichts davon geschieht bei Beiträgen, die mit Gutenberg erstellt wurden. 😭
Ich muss ein neues System finden oder entwickeln, das überall auf der Website gut mit Bildern umgeht und idealerweise ein weniger maßgeschneidertes System ist, das einfacher zu warten ist. Möglicherweise finde ich das mit Cloudinary heraus, vielleicht probiere ich einen anderen Dienst aus, vielleicht lasse ich WordPress es direkt abwickeln, unterstützt vom Jetpack Site Accelerator. Noch nicht sicher. Immer gibt es etwas zu tun.
- Ich sehe, dass WordPress selbst in das Block-Scaffolding-Spiel einsteigt. Ihr "create-wordpress-block"-Konzept hat seinen Weg in das Gutenberg-Repository selbst gefunden, das Sie mit
npm init @wordpress/block [options] [slug]starten.
Sehr guter Bericht, ich genieße es zu sehen, wie Leute Gutenberg nutzen, um ihn an ihre bestehende Website und ihren Workflow anzupassen. Der Punkt, wiederverwendbare Blöcke für den Callout einzurichten, anstatt für alles benutzerdefinierte Blöcke zu erstellen, ist wirklich gut. Das, kombiniert mit dem Gruppenblock, könnte eine gute Lösung für Szenarien sein, die etwas komplexer sind.
Ich wollte auch Syntax-Hervorhebung im Codeblock einrichten und entdeckte das Plugin Code Syntax Block, das den Kernblock erweitert. Ich denke, das Hauptding, das ihm fehlt, ist die Zeilenhervorhebung. Ich hatte Ihren Codepen-Embed-Block nicht gesehen, der ist wirklich nett! Den werde ich definitiv verwenden müssen.
Ich bin auch ein riesiger Fan von Cloudinary. Könnten Sie etwas mehr darüber sagen, warum Cloudinary und der Block-Editor nicht gut zusammenarbeiten?
Ich bin auch ein riesiger Fan von Cloudinary, ich hatte einfach einen Haufen technischer Schulden von einem wirklich maßgeschneiderten Setup, das ich hatte. Ich habe tatsächlich den Schritt gewagt, das abzureißen und jetzt einfach Jetpack Site Accelerator direkt zu verwenden. Es ist nicht ganz so schick wie das Cloudinary-Setup (zum Beispiel hat das Cloudinary-Setup das perfekte
srcsetfür jedes Bild einzeln ermittelt), aber es hat nahezu keine technischen Schulden, funktioniert gut mit Gutenberg und macht die Upload-Zeit viel schneller.Hallo Chris!
Ich dachte, Sie würden CSS Tricks mit JAMstack-Technologie nutzen, aber ist WordPress und PHP nicht JAMstack? Ich meine, nur weil Sie es bewerben, heißt das nicht, dass Sie es benutzen müssen, aber ich dachte, Sie würden es tun?
Oh, ich bin ein großer Fan von Jamstack. Ich denke, es kann einen großen Teil des Webs antreiben und ist eine großartige Wahl. Aber es gibt unzählige Gründe, warum eine bestimmte Website einen anderen Stack haben könnte. Für CSS-Tricks gibt es ein paar Gründe. Einer ist, dass ich eine Menge verschiedener Funktionen von WordPress nutze, bis zu dem Grad, dass ich denke, CSS-Tricks ist eine Art Poster-Child-WordPress-Seite. Es passt einfach gut. Zwei ist Legacy. Das Umschreiben einer Website ist keine kleine Aufgabe. Es muss große, klare Vorteile geben. Ich kann einige Vorteile sehen, CSS-Tricks auf eine Jamstack-Architektur umzustellen, aber vielleicht nicht genug, um sofort loszulegen und es zu einer großen Priorität zu machen. Ich entwickle auf dieser Seite immer noch gerne, fühle mich produktiv dabei und stoße auf keine Hindernisse. Selbst wenn ich CSS-Tricks auf Jamstack umstellen würde, würde ich wahrscheinlich bei WordPress bleiben. Ich habe darüber geschrieben, warum nur ein CMS zu wechseln für mich nicht besonders hilfreich wäre. Ich könnte einen statischen Website-Generator verwenden und WordPress-APIs ansprechen, um zu Jamstack zu werden, ohne das CMS zu verlassen, wissen Sie? Auch hier, ich mache das gerade nicht, da es viele Unbekannte gibt und ich keinen ausreichend großen Vorteil sehe. Wenn ich heute eine neue Website erstellen würde, müssten Sie mich davon abhalten, Jamstack zu nutzen.
Danke für Ihre Antwort!
Ich habe Ihre beiden anderen Artikel gelesen und ich verstehe es vollkommen. Mir ist dasselbe passiert: Ich habe vor 5 Jahren ein kleines Projekt unter WordPress erstellt und es musste neu gemacht werden, und es hat mich anderthalb Monate gekostet, abends nach meiner täglichen Arbeit (auch allein an diesem Projekt), es im JAMstack-Stil neu zu machen. Zäh.
Hallo Chris,
Bezüglich Ihrer Bedenken bezüglich der Bildhandhabung hat Cloudinary ein neues Plugin (in Beta), das auch Gutenberg unterstützt.
Schauen Sie es sich an – https://cloudinary.com/documentation/wordpress_integration
Eine weitere Methode zur Erstellung benutzerdefinierter Blöcke, die ich mit großem Erfolg eingesetzt habe, ist Advanced Custom Fields. Wenn Sie bereits mit ACF vertraut sind, dann ist das Erlernen der Funktionen zur Erstellung benutzerdefinierter Blöcke und die Zuweisung der benötigten Felder zu diesen Blöcken ein Kinderspiel. Es war eine großartige Weiterentwicklung meines bestehenden Workflows, sobald ich Gutenberg in meiner Kundenarbeit endlich angenommen hatte.
Gutenberg ist ein großartiges Werkzeug. Angesichts des Marktanteils von WordPress ist die Vorstellung, dass JEDER GUTENBERG NUTZEN MUSS, im besten Fall ... töricht. Das Internet ist vielfältig. Es gibt keinen guten Grund zu glauben, dass JEDER Gutenberg braucht.
Hallo Chris,
Ich denke, Gutenberg bietet uns eine wirklich schöne Schreiberfahrung und ich bin auch ein Fan von wiederverwendbaren Blöcken.
Jedenfalls schreibe ich Ihnen, um Sie darüber zu informieren, falls Sie es nicht bemerkt haben, dass Sie Beiträge, die mit dem klassischen Editor erstellt wurden, nativ mit Gutenberg konvertieren können. Ich erinnere mich nicht genau, wo die Option ist, aber ich glaube, sie ist hinter drei Punkten verborgen.
Es ist nicht automatisch, aber ich bin vor einiger Zeit durch alte Beiträge gegangen und muss sagen, dass es gute Arbeit leistet, auch wenn es auf Shortcodes oder benutzerdefinierten Code trifft. Vielleicht können Sie es ausprobieren, wenn Sie einen alten Beitrag bearbeiten müssen.
Meine zwei Cent
Ja, das ist gut zu wissen! Ich bin sicher, das werden wir letztendlich tun, einfach die verdammte Sache komplett aktivieren und die alten Beiträge größtenteils im seltsamen, riesigen klassischen Block bearbeiten, aber die automatische Konvertierung versuchen, wenn wir größere Updates vornehmen wollen.
Vergessen Sie nicht die Block Style Variations!
Mit sehr wenig Code (Registrierung der Variation und dann Unterstützung der Klasse) können Sie eine Benutzeroberfläche erhalten, um diese Klassennamen anzuwenden, und eine schöne Vorschau im Editor!
Sie müssen eine neue Klasse wie
.is-style-explanationhinzufügen (alle Stilvarianten beginnen mitis-style, aber Sie könnten wahrscheinlich die gesamte Arbeit erledigen, um dies in 15 Minuten zum Laufen zu bringen.Das war ein aufschlussreicher Artikel, Chris. Ich freue mich auch zu sehen, dass Sie mein create-guten-block Open-Source-Projekt zur Erstellung neuer benutzerdefinierter Blöcke verwenden. Ich habe dieses Projekt seit Ewigkeiten nicht mehr aktualisiert, es irgendwie inmitten der gesamten Mehrdeutigkeit und Feindseligkeit in der FOSS-Community über Gutenberg oder nicht Gutenberg belassen.
Frieden! ✌️