{"id":3666,"date":"2025-10-27T01:04:14","date_gmt":"2025-10-26T22:04:14","guid":{"rendered":"https:\/\/de.davidka.net\/de\/?p=3666"},"modified":"2025-10-27T01:14:58","modified_gmt":"2025-10-26T22:14:58","slug":"code-highlighting-in-wordpress-mit-gutenberg-und-prism-js","status":"publish","type":"post","link":"http:\/\/de.davidka.net\/de\/2025\/10\/27\/code-highlighting-in-wordpress-mit-gutenberg-und-prism-js\/","title":{"rendered":"Code-Highlighting in WordPress mit Gutenberg und Prism.js"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Wenn Sie Inhalte in WordPress erstellen, verwenden Sie meist den <strong>Gutenberg-Editor<\/strong>.<br>Er wurde mit <strong>WordPress 5.0<\/strong> (Dezember 2018) eingef\u00fchrt und hat den alten Texteditor <strong>TinyMCE<\/strong> ersetzt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>TinyMCE<\/strong> war ein einfacher Editor aus der <strong>Web-1.0-\u00c4ra<\/strong> \u2013 ein <code class=\"\" data-line=\"\">&lt;textarea&gt;<\/code>-Feld mit Schaltfl\u00e4chen wie \u201eFett\u201c, \u201eKursiv\u201c und \u201eLink\u201c.<br>Der gesamte Text wurde als durchgehender HTML-Strom gespeichert, was es schwierig machte, Abs\u00e4tze zu verschieben oder etwas dazwischen einzuf\u00fcgen.<br>Au\u00dferdem unterst\u00fctzte TinyMCE <strong>kein responsives 12-Spalten-Layout<\/strong>, das in der <strong>Web-2.0-\u00c4ra<\/strong> zum De-facto-Standard wurde.<br>Komplexe Layouts mussten daher manuell mit HTML und CSS erstellt werden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Gutenberg \u2013 ein Editor der neuen Generation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der <strong>Gutenberg-Editor<\/strong> hat dieses Problem gel\u00f6st.<br>Jeder Teil einer Seite existiert jetzt als <strong>Block<\/strong> \u2013 \u00dcberschrift, Absatz, Zitat, Bild, Tabelle oder Code-Block \u2013<br>was die Bearbeitung vereinfacht und das Layout flexibel und anpassbar macht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inhalte sollten auf allen Ger\u00e4ten gut aussehen \u2013 vom Smartphone bis zum gro\u00dfen Monitor.<br>Wenn eine Website nicht responsiv ist, verrutscht der Text, Bilder werden abgeschnitten und Tabellen laufen \u00fcber den Rand.<br>Dies wird durch ein <strong>responsives Layout<\/strong> gel\u00f6st, das sich automatisch an die Bildschirmbreite anpasst.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Grundlage dieses Layouts ist ein <strong>12-Spalten-Raster<\/strong>, bekannt durch Frameworks wie <strong>Bootstrap<\/strong> und <strong>Foundation<\/strong>.<br>Die Breite des Containers wird in 12 gleich gro\u00dfe Teile (je 8,33 %) unterteilt, womit sich nahezu jedes Layout bauen l\u00e4sst.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">1 Spalte  \u2192 &#091;\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588] 100 %\n2 Spalten \u2192 &#091;\u2588\u2588\u2588\u2588\u2588\u2588]&#091;\u2588\u2588\u2588\u2588\u2588\u2588] 6\/6\n3 Spalten \u2192 &#091;\u2588\u2588\u2588\u2588]&#091;\u2588\u2588\u2588\u2588]&#091;\u2588\u2588\u2588\u2588] 4\/4\/4\n4 Spalten \u2192 &#091;\u2588\u2588\u2588]&#091;\u2588\u2588\u2588]&#091;\u2588\u2588\u2588]&#091;\u2588\u2588\u2588] 3\/3\/3\/3\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Auf Mobilger\u00e4ten werden die Spalten automatisch vertikal angeordnet,<br>sodass der Inhalt \u00fcbersichtlich und lesbar bleibt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Wie Gutenberg das Raster umsetzt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Gutenberg wird das 12-Spalten-Raster mit dem <strong>Spalten-Block (Columns)<\/strong> realisiert,<br>der die Elemente automatisch an die Bildschirmbreite anpasst.<br>In HTML werden Container mit den Klassen <code class=\"\" data-line=\"\">wp-block-columns<\/code> und <code class=\"\" data-line=\"\">wp-block-column<\/code> verwendet,<br>und in CSS sorgt <strong>Flexbox<\/strong> f\u00fcr Ausrichtung und Verhalten der Spalten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;div class=&quot;wp-block-columns&quot;&gt;\n  &lt;div class=&quot;wp-block-column&quot;&gt;\n    &lt;p&gt;Erste Spalte&lt;\/p&gt;\n  &lt;\/div&gt;\n  &lt;div class=&quot;wp-block-column&quot;&gt;\n    &lt;p&gt;Zweite Spalte&lt;\/p&gt;\n  &lt;\/div&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">.wp-block-columns {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 2em;\n}\n.wp-block-column {\n  flex-grow: 1;\n  flex-basis: 0;\n}\n@media (max-width: 600px) {\n  .wp-block-columns {\n    flex-direction: column;\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Struktur macht Gutenberg flexibel und sorgt f\u00fcr konsistente Darstellung auf allen Ger\u00e4ten.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Das Problem des Standard-Codeblocks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unter den vielen Gutenberg-Bl\u00f6cken verdient der <strong>Code-Block<\/strong> besondere Aufmerksamkeit.<br>Er dient zur Anzeige von Programmcodes, Skripten oder Konfigurationen.<br>Technisch gesehen ist es ein einfacher HTML-Container:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;pre&gt; ... &lt;\/pre&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gutenberg und TinyMCE zeigen ihn gleich an \u2013 als <strong>monospace-Text<\/strong><br>(meist mit den Schriftarten <code class=\"\" data-line=\"\">Consolas<\/code>, <code class=\"\" data-line=\"\">Courier New<\/code> oder <code class=\"\" data-line=\"\">Monaco<\/code>)<br>ohne Syntax-Highlighting oder Zeilennummern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr einfache Texte reicht das, aber bei technischen Artikeln oder Tutorials<br>ist Code ohne Farbe schwer lesbar.<br>Die einfachste L\u00f6sung ist <strong>Prism.js<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist Prism.js?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prism.js<\/strong> ist eine leichte JavaScript-Bibliothek f\u00fcr Syntax-Highlighting direkt im Browser.<br>Sie ben\u00f6tigt keinen Server-Support \u2013 das Skript analysiert den Inhalt zwischen <code class=\"\" data-line=\"\">&lt;pre&gt;&lt;code&gt;...<\/code><\/pre><\/code>,<br>und die CSS-Datei <code class=\"\" data-line=\"\">prism.css<\/code> f\u00e4rbt Schl\u00fcsselw\u00f6rter, Zeichenketten, Zahlen und Kommentare ein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prism unterst\u00fctzt Dutzende Programmiersprachen \u2013 von HTML und JavaScript bis Python und Go \u2013<br>und bietet viele Plugins: Zeilennummern, Kopierschaltfl\u00e4che, Sprachlabel, helle\/dunkle Themen und mehr.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;\nfunction hello(name) {\n  return `Hello, ${name}!`;\n}\n<\/code><\/pre>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nach dem Einbinden von Prism.js wird dieser Code automatisch im Browser hervorgehoben.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Arbeiten mit einem Child-Theme<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor Sie Prism.js hinzuf\u00fcgen, sollten Sie den Haupt-Theme-Code nicht direkt \u00e4ndern.<br>Alle Anpassungen in WordPress sollten in einem <strong>Child-Theme<\/strong> erfolgen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein WordPress-Theme steuert das Aussehen der Website \u2013 Vorlagen, Stile, Men\u00fcs, Header und Footer.<br>Wenn Sie den aktiven Theme \u00e4ndern, werden Ihre \u00c4nderungen beim n\u00e4chsten Update \u00fcberschrieben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Child-Theme l\u00f6st dieses Problem: Es erbt das Eltern-Theme,<br>beh\u00e4lt Ihre Anpassungen aber separat bei und sch\u00fctzt sie vor Updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie einen Ordner:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\/wp-content\/themes\/mein-child-theme\/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie darin eine Datei <code class=\"\" data-line=\"\">style.css<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\/*\n Theme Name:   Mein Child-Theme\n Template:     mein-theme\n Version:      1.0\n*\/\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das Feld <code class=\"\" data-line=\"\">Template<\/code> muss dem Ordnernamen des Eltern-Themes entsprechen.<br>Dann erstellen Sie <code class=\"\" data-line=\"\">functions.php<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;?php\nadd_action(&#039;wp_enqueue_scripts&#039;, &#039;child_enqueue_styles&#039;);\nfunction child_enqueue_styles() {\n    wp_enqueue_style(&#039;parent-style&#039;, get_template_directory_uri() . &#039;\/style.css&#039;);\n    wp_enqueue_style(&#039;child-style&#039;,\n        get_stylesheet_directory_uri() . &#039;\/style.css&#039;,\n        array(&#039;parent-style&#039;)\n    );\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aktivieren Sie das Child-Theme unter <strong>Design \u2192 Themes<\/strong><br>und f\u00fchren Sie alle Anpassungen dort aus.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Verwendung der Website Prism.js<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Ihr Child-Theme bereit ist, besuchen Sie die offizielle Prism.js-Website:<br>\ud83d\udc49 <a href=\"https:\/\/prismjs.com\/\">https:\/\/prismjs.com<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6ffnen Sie den Reiter <strong>Download<\/strong>, um Ihre eigene Version der Bibliothek zusammenzustellen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Empfohlene Einstellungen<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Compression level:<\/strong> <code class=\"\" data-line=\"\">Minified<\/code><\/li>\n\n\n\n<li><strong>Languages:<\/strong> HTML, CSS, JavaScript, PHP, Python, JSON<\/li>\n\n\n\n<li><strong>Plugins:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Line Numbers<\/li>\n\n\n\n<li>Toolbar<\/li>\n\n\n\n<li>Copy to Clipboard Button<\/li>\n\n\n\n<li>(optional) Show Language<\/li>\n\n\n\n<li>(optional) Highlight Lines<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Laden Sie anschlie\u00dfend herunter:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DOWNLOAD JS<\/strong> \u2192 <code class=\"\" data-line=\"\">prism.js<\/code><\/li>\n\n\n\n<li><strong>DOWNLOAD CSS<\/strong> \u2192 <code class=\"\" data-line=\"\">prism.css<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Speichern Sie beide Dateien im Ordner Ihres Child-Themes:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">\/wp-content\/themes\/mein-child-theme\/\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Prism.js in WordPress einbinden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6ffnen Sie <code class=\"\" data-line=\"\">functions.php<\/code> und f\u00fcgen Sie Folgendes hinzu:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">add_action(&#039;wp_enqueue_scripts&#039;, &#039;theme_enqueue_prism_assets&#039;);\nfunction theme_enqueue_prism_assets() {\n    $version = &#039;1.29.0&#039;;\n    wp_enqueue_style(&#039;prism-css&#039;,\n        get_stylesheet_directory_uri() . &#039;\/prism.css&#039;, &#091;], $version);\n    wp_enqueue_script(&#039;prism-js&#039;,\n        get_stylesheet_directory_uri() . &#039;\/prism.js&#039;, &#091;], $version, true);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Prism.js hebt nun automatisch jeden Code innerhalb von<br><code class=\"\" data-line=\"\">&lt;pre&gt;&lt;code&gt;...<\/code><\/pre><\/code> hervor.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Automatische Zeilennummerierung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcgen Sie einen WordPress-Filter hinzu, um Zeilennummern automatisch einzuf\u00fcgen:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">add_filter(&#039;render_block_core\/code&#039;, &#039;theme_add_prism_line_numbers&#039;, 10, 2);\nfunction theme_add_prism_line_numbers($content, $block) {\n    return str_replace(\n        &#039;&lt;pre class=&quot;wp-block-code&quot;&gt;&#039;,\n        &#039;&lt;pre class=&quot;wp-block-code line-numbers&quot;&gt;&#039;,\n        $content\n    );\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">HTML-Zeichen escapen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Ihr Code <code class=\"\" data-line=\"\">&lt;<\/code> oder <code class=\"\" data-line=\"\">&gt;<\/code> enth\u00e4lt, kann der Browser diese als HTML-Tags interpretieren.<br>Um dies zu verhindern, f\u00fcgen Sie einen Filter hinzu, der diese Zeichen beim Speichern automatisch ersetzt:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">add_filter(&#039;content_save_pre&#039;, &#039;theme_escape_code_on_save&#039;);\nfunction theme_escape_code_on_save($content) {\n    return preg_replace_callback(\n        &#039;\/&lt;code(&#091;^&gt;]*)&gt;(.*?)&lt;\\\/code&gt;\/is&#039;,\n        function ($m) {\n            $attrs = $m&#091;1];\n            $code  = htmlspecialchars($m&#091;2], ENT_NOQUOTES, &#039;UTF-8&#039;);\n            return &quot;&lt;code{$attrs}&gt;{$code}<\/code>\";\n        },\n        $content\n    );\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">CSS-Stile f\u00fcr Codebl\u00f6cke<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcgen Sie diese Stile in die <code class=\"\" data-line=\"\">style.css<\/code> Ihres Child-Themes ein:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">pre&#091;class*=&quot;language-&quot;] {\n  border-radius: 6px;\n  border: 1px solid #ddd;\n  padding: 1em;\n  background: #f6f8fa;\n  font-family: &#039;Fira Code&#039;, Consolas, monospace;\n  font-size: 14px;\n  line-height: 1.6;\n  overflow: auto;\n}\npre&#091;class*=&quot;language-&quot;].line-numbers {\n  padding-left: 3.8em;\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Zus\u00e4tzliche Funktionen von Prism.js<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83d\udd22 <strong>Zeilennummern<\/strong> \u2013 f\u00fcgt Nummern wie in einem IDE hinzu.<\/li>\n\n\n\n<li>\ud83e\udde0 <strong>Hervorhebung bestimmter Zeilen<\/strong> \u2013 mit <code class=\"\" data-line=\"\">data-line=&quot;2,4-5&quot;<\/code>.<\/li>\n\n\n\n<li>\ud83d\udccb <strong>Kopier-Button<\/strong> \u2013 kopiert Code mit einem Klick.<\/li>\n\n\n\n<li>\ud83d\udca1 <strong>Sprachlabel<\/strong> \u2013 zeigt den Namen der Sprache \u00fcber dem Block an.<\/li>\n\n\n\n<li>\ud83c\udf17 <strong>Hell-\/Dunkel-Thema<\/strong> \u2013 automatischer Wechsel:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">@media (prefers-color-scheme: dark) {\n  body { background: #1e1e1e; color: #d4d4d4; }\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83c\udfa8 <strong>Anpassung<\/strong> \u2013 \u00e4ndern Sie Farben direkt in <code class=\"\" data-line=\"\">style.css<\/code>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">.token.keyword { color: #d73a49; font-weight: 600; }\n.token.string  { color: #032f62; }\n.token.comment { color: #6a737d; font-style: italic; }\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Vorher und nachher mit Prism.js<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Vorher<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;pre&gt;&lt;code&gt;\nfunction greet(name) {\n  return `Hello, ${name}`;\n}\n<\/code><\/pre>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ergebnis:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">function greet(name) {\n  return `Hello, ${name}`;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Monospace-Text, ohne Farbe und Zeilennummern.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Nachher<\/h3>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;pre class=&quot;line-numbers&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;\nfunction greet(name) {\n  return `Hello, ${name}`;\n}\n<\/code><\/pre>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ergebnis:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">1 function greet(name) {\n2   return `Hello, ${name}`;\n3 }\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Jede Zeile ist nummeriert, der Code farbig hervorgehoben,<br>und ein <strong>Copy<\/strong>-Button erscheint zum schnellen Kopieren.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prism.js<\/strong> macht Codebl\u00f6cke klarer und besser lesbar.<br>Es funktioniert vollst\u00e4ndig im Browser, ohne zus\u00e4tzliche Plugins,<br>und beeintr\u00e4chtigt die Performance nicht.<br>Einmal eingerichtet, erscheint Ihr Code sauber, strukturiert und professionell.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Standardblock **\u201eCode\u201c** im Gutenberg-Editor unterst\u00fctzt keine Syntaxhervorhebung. Die Bibliothek **Prism.js** l\u00f6st dieses Problem, indem sie eine elegante Codehervorhebung mit Zeilennummerierung und zus\u00e4tzlichen Funktionen hinzuf\u00fcgt.<\/p>\n","protected":false},"author":1,"featured_media":3667,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-3666","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts\/3666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/comments?post=3666"}],"version-history":[{"count":0,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts\/3666\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/media\/3667"}],"wp:attachment":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/media?parent=3666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/categories?post=3666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/tags?post=3666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}