{"id":6914,"date":"2026-04-11T12:03:03","date_gmt":"2026-04-11T10:03:03","guid":{"rendered":"https:\/\/ploetner.io\/de\/?p=6914"},"modified":"2026-06-13T13:05:42","modified_gmt":"2026-06-13T11:05:42","slug":"dynamische-bloecke-in-wenigen-minuten","status":"publish","type":"post","link":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/","title":{"rendered":"Dynamische Bl\u00f6cke in wenigen Minuten"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ich schreibe diesen Artikel, w\u00e4hrend ich mich noch auf dem <a href=\"https:\/\/vienna.wordcamp.org\/2026\/\">WordCamp Vienna 2026<\/a>  befinde. Ich habe gerade meinen Flash Talk <strong>&#8222;Dynamic Blocks from 0 to 100 in 30 Minutes&#8220;<\/strong> gehalten. Die Pr\u00e4sentation soll belegen, dass der Weg vom leeren Ordner zum fertigen Dynamic Block keine 30 Minuten dauert. Er dauert etwa 5. Und in diesem Beitrag fasse ich zusammen, was ich dort erz\u00e4hlt habe.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2026\/04\/Dynamic-Blocks-from-0-to-100-in-30-Minutes-1.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Einbettung von Dynamic Blocks from 0 to 100 in 30 Minutes.\"><\/object><a id=\"wp-block-file--media-de3b54bd-f945-4c55-a17f-83bc931b1b97\" href=\"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2026\/04\/Dynamic-Blocks-from-0-to-100-in-30-Minutes-1.pdf\">Dynamic Blocks from 0 to 100 in 30 Minutes<\/a><a href=\"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2026\/04\/Dynamic-Blocks-from-0-to-100-in-30-Minutes-1.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-de3b54bd-f945-4c55-a17f-83bc931b1b97\">Herunterladen<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Die Idee zu meinem Vortrag f\u00e4ngt mit einem Shortcode an. Ich arbeite nebenbei an einem Projekt mit einem Webdesigner, und der hat in einem WordPress-Plugin einen Shortcode ausgeliefert. Ich fragte: <strong>Warum nicht als Block?<\/strong> Die Antwort: <strong>Ich wei\u00df nicht, wie das geht.<\/strong> Blocks haben den Ruf, kompliziert zu sein. Zu viele Config-Dateien, zu viele Tutorials von 2019, zu viel npm-Magie. Aber stimmt das eigentlich noch?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum dynamische Bl\u00f6cke?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Kurze Grundlage: Ein statischer Block speichert seinen HTML-Output direkt in der Datenbank. Was man im Editor sieht, wird genau so abgelegt. Ein dynamischer Block funktioniert anders. Er speichert nur die Attribute, also die Einstellungen. Das eigentliche HTML wird bei jedem Seitenaufruf von PHP erzeugt. Der Output ist immer frisch. Kein <code>save.js<\/code> n\u00f6tig. Nur eine <code>render.php<\/code>. F\u00fcr die meisten realen Anwendungsf\u00e4lle ist das genau richtig.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum das noch wichtig ist<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt noch einen zweiten Grund, sich mit den Grundlagen zu besch\u00e4ftigen. Wer in letzter Zeit AI-Tools benutzt hat, um Blocks zu generieren, hat vielleicht bemerkt: Die verwenden alle dasselbe Tooling. <code>create-block<\/code>, <code>wp-scripts<\/code>, <code>block.json<\/code>, <code>render.php<\/code>. Selbst wenn ein LLM den Code schreibt, muss man verstehen, was da passiert. Und genau daf\u00fcr ist dieser Beitrag gedacht.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Drei Befehle. Das war&#8217;s.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress hat ein offizielles Scaffolding-Tool: <code>create-block<\/code>. Drei Befehle und man hat ein funktionierendes Block-Plugin mit modernem Build-Setup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx @wordpress\/create-block@latest my-block --variant=dynamic\ncd my-block\nnpm start<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Keine obskure Konfiguration. Alles wird von <code>wp-scripts<\/code> \u00fcbernommen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die vier Dateien, die z\u00e4hlen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Was hat <code>create-block<\/code> gerade erzeugt? Im Kern sind es vier Dateien:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>block.json<\/code> ist das Manifest, die zentrale &#8222;Wahrheit&#8220; des Blockes.<\/li>\n\n\n\n<li><code>index.js<\/code> registriert den Block auf der Client-Seite.<\/li>\n\n\n\n<li><code>edit.js<\/code> ist eine React-Komponente, die steuert, wie der Block im Editor aussieht.<\/li>\n\n\n\n<li><code>render.php<\/code> ist die Datei, die auf dem Frontend die Arbeit macht: serverseitiges Rendering mit PHP.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt noch ein paar weitere Dateien, Stylesheets zum Beispiel, aber diese vier sind der Kern jedes Dynamic Blocks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die eine Zeile, die den Unterschied macht<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn man nur eine Sache aus diesem Beitrag mitnimmt, dann diese. In der <code>block.json<\/code> setzt man die <code>render<\/code>-Eigenschaft auf die PHP-Datei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"render\": \"file:.\/render.php\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese eine Zeile sagt WordPress: Suche keine <code>save<\/code>-Funktion in JavaScript, rendere diesen Block stattdessen mit PHP. Das ist der gesamte Unterschied zwischen einem statischen und einem dynamischen Block.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">React im Editor. PHP im Frontend.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die <code>edit.js<\/code> ist der Ort, an dem man das Editor-UI baut. Es ist eine React-Komponente. Drei Dinge, die man sich merken sollte:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>useBlockProps()<\/code> immer auf das Root-Element spreaden. Damit wendet WordPress die richtigen Klassen und Styles an.<\/li>\n\n\n\n<li><code>InspectorControls<\/code> f\u00fcr ein Settings-Panel in der Sidebar verwenden. <\/li>\n\n\n\n<li><code>setAttributes()<\/code> aufrufen, wenn der Benutzer etwas \u00e4ndert.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist das Pattern. Wenn man es einmal gesehen hat, kann man jedes Editor-UI bauen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">render.php: Immer frisch.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die <code>render.php<\/code> l\u00e4uft bei jedem Seitenaufruf. Man bekommt das <code>$attributes<\/code>-Array mit allem, was der Benutzer im Editor konfiguriert hat. Man verwendet <code>get_block_wrapper_attributes()<\/code> f\u00fcr das korrekte Wrapper-Markup. Und man benutzt nat\u00fcrlich immer <a href=\"https:\/\/developer.wordpress.org\/apis\/security\/escaping\/\">Escaping<\/a> f\u00fcr die Ausgaben. <strong>Immer.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Drei Dinge. Das ist alles, was man f\u00fcr eine <code>render.php<\/code> wissen muss.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Block Supports: Nicht bauen, was WordPress schon mitbringt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Anstatt eigene Color Picker, Font-Size-Controls oder Spacing-UIs zu bauen, deklariert man einfach in der <code>block.json<\/code>, was man braucht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"supports\": {\n  \"color\": true,\n  \"typography\": { \"fontSize\": true },\n  \"spacing\": { \"padding\": true, \"margin\": true }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress generiert die Controls im Editor und wendet die Styles im Frontend <strong>automatisch<\/strong> an. Das Rad muss man hier nicht neu erfinden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Attribute: Das Ged\u00e4chtnis des Blocks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Attribute sind die Art, wie ein Block sich merkt, was der Benutzer konfiguriert hat. Man definiert sie in der <code>block.json<\/code> mit einem Typ und einem Standardwert: <code>string<\/code>, <code>boolean<\/code>, <code>integer<\/code>, <code>array<\/code>, <code>object<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Und bei Dynamic Blocks der beste Teil: Sie werden automatisch an die <code>render.php<\/code> weitergegeben. Man muss nichts manuell verbinden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zwei Befehle f\u00fcr den Alltag<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der t\u00e4gliche Workflow besteht aus zwei Befehlen. <code>npm start<\/code> f\u00fcr die Entwicklung: Dateien werden \u00fcberwacht und bei jeder \u00c4nderung neu kompiliert. <code>npm run build<\/code>, wenn man ausliefern will: optimierter, minifizierter Output.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beides wird von <code>wp-scripts<\/code> angetrieben. Null Konfiguration n\u00f6tig.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kein JavaScript? Kein Problem.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Man kann einen Block auch komplett in PHP registrieren. Mit <code>register_block_type()<\/code> und einem <code>render_callback<\/code>. Kein Build-Schritt, kein npm, kein <code>node_modules<\/code>. Der Block erscheint im Editor via <code>ServerSideRender<\/code>, und die gesamte Logik bleibt in PHP. F\u00fcr einfachere Anwendungsf\u00e4lle ist das eine solide Option.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bonus 1: Zero JavaScript. Ernsthaft.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress 7.0 bringt das <code>autoRegister<\/code>-Flag. Wenn man <code>autoRegister<\/code> in den Supports auf <code>true<\/code> setzt, erscheint der PHP-only Block automatisch im Editor. Aber das wirklich Spannende: WordPress generiert Inspector Controls aus den Attribut-Definitionen. Ein <code>string<\/code> wird zum Textfeld, ein <code>boolean<\/code> zum Toggle, ein <code>enum<\/code> zum Dropdown. Kein JavaScript. \u00dcberhaupt keins.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>register_block_type( 'my-plugin\/example', &#91;\n    'title'           =&gt; 'My Block',\n    'attributes'      =&gt; &#91; \/* ... *\/ ],\n    'render_callback' =&gt; function ( $attributes ) {\n        return '&lt;div&gt;' . esc_html( $attributes&#91;'title'] ) . '&lt;\/div&gt;';\n    },\n    'supports' =&gt; &#91; 'autoRegister' =&gt; true ],\n] );\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PHP-Entwickler, willkommen zur\u00fcck.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bonus 2: Ein Aufruf f\u00fcr alle Blocks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ein Plugin mehrere Blocks enth\u00e4lt, muss man seit WordPress 6.8 nicht mehr jeden einzeln registrieren. Man generiert eine Manifest-Datei mit <code>wp-scripts<\/code> und registriert dann alle Blocks mit einem einzigen Funktionsaufruf:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wp_register_block_types_from_metadata_collection(\n    __DIR__ . '\/build',\n    __DIR__ . '\/build\/blocks-manifest.php'\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Neues Block-Verzeichnis anlegen, Build laufen lassen, fertig. Es wird automatisch erkannt. Kein Vergessen mehr, einen Block irgendwo in der PHP-Datei zu registrieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Scaffold. Customize. Build. Repeat.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das ist der Workflow. Man scaffoldet mit <code>create-block<\/code>. Man passt <code>edit.js<\/code>, <code>render.php<\/code> und <code>block.json<\/code> an. Man baut mit <code>npm run build<\/code>. Und dann macht man es f\u00fcr den n\u00e4chsten Block nochmal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich schreibe diesen Artikel, w\u00e4hrend ich mich noch auf dem WordCamp Vienna 2026 befinde. Ich habe gerade meinen Flash Talk &#8222;Dynamic Blocks from 0 to 100 in 30 Minutes&#8220; gehalten. Die Pr\u00e4sentation soll belegen, dass der Weg vom leeren Ordner zum fertigen Dynamic Block keine 30 Minuten dauert. Er dauert etwa 5. Und in diesem &hellip; <a href=\"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDynamische Bl\u00f6cke in wenigen Minuten\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"wpf_show_in_dewp_planet_feed":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[7],"tags":[],"class_list":["post-6914","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dynamische Bl\u00f6cke in wenigen Minuten - realloc&#039;s asylum<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dynamische Bl\u00f6cke in wenigen Minuten - realloc&#039;s asylum\" \/>\n<meta property=\"og:description\" content=\"Ich schreibe diesen Artikel, w\u00e4hrend ich mich noch auf dem WordCamp Vienna 2026 befinde. Ich habe gerade meinen Flash Talk &#8222;Dynamic Blocks from 0 to 100 in 30 Minutes&#8220; gehalten. Die Pr\u00e4sentation soll belegen, dass der Weg vom leeren Ordner zum fertigen Dynamic Block keine 30 Minuten dauert. Er dauert etwa 5. Und in diesem &hellip; \u201eDynamische Bl\u00f6cke in wenigen Minuten\u201c weiterlesen\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/\" \/>\n<meta property=\"og:site_name\" content=\"realloc&#039;s asylum\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-11T10:03:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-13T11:05:42+00:00\" \/>\n<meta name=\"author\" content=\"realloc\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"realloc\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/\"},\"author\":{\"name\":\"realloc\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"headline\":\"Dynamische Bl\u00f6cke in wenigen Minuten\",\"datePublished\":\"2026-04-11T10:03:03+00:00\",\"dateModified\":\"2026-06-13T11:05:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/\"},\"wordCount\":869,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"articleSection\":[\"WordPress\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/\",\"name\":\"Dynamische Bl\u00f6cke in wenigen Minuten - realloc&#039;s asylum\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#website\"},\"datePublished\":\"2026-04-11T10:03:03+00:00\",\"dateModified\":\"2026-06-13T11:05:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/dynamische-bloecke-in-wenigen-minuten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ploetner.io\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dynamische Bl\u00f6cke in wenigen Minuten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/\",\"name\":\"realloc's asylum\",\"description\":\"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.\",\"publisher\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ploetner.io\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/#\\\/schema\\\/person\\\/571f8ada841cca782e8001b942e032c8\",\"name\":\"realloc\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"contentUrl\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\",\"width\":847,\"height\":848,\"caption\":\"realloc\"},\"logo\":{\"@id\":\"https:\\\/\\\/ploetner.io\\\/de\\\/wp-content\\\/uploads\\\/sites\\\/7\\\/sites\\\/8\\\/2022\\\/11\\\/52602486_10215993351498483_6040822616506236928_n.jpg\"},\"description\":\"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.\",\"sameAs\":[\"https:\\\/\\\/ploetner.io\\\/\"],\"url\":\"https:\\\/\\\/ploetner.io\\\/de\\\/author\\\/realloc\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dynamische Bl\u00f6cke in wenigen Minuten - realloc&#039;s asylum","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/","og_locale":"de_DE","og_type":"article","og_title":"Dynamische Bl\u00f6cke in wenigen Minuten - realloc&#039;s asylum","og_description":"Ich schreibe diesen Artikel, w\u00e4hrend ich mich noch auf dem WordCamp Vienna 2026 befinde. Ich habe gerade meinen Flash Talk &#8222;Dynamic Blocks from 0 to 100 in 30 Minutes&#8220; gehalten. Die Pr\u00e4sentation soll belegen, dass der Weg vom leeren Ordner zum fertigen Dynamic Block keine 30 Minuten dauert. Er dauert etwa 5. Und in diesem &hellip; \u201eDynamische Bl\u00f6cke in wenigen Minuten\u201c weiterlesen","og_url":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/","og_site_name":"realloc&#039;s asylum","article_published_time":"2026-04-11T10:03:03+00:00","article_modified_time":"2026-06-13T11:05:42+00:00","author":"realloc","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"realloc","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/#article","isPartOf":{"@id":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/"},"author":{"name":"realloc","@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"headline":"Dynamische Bl\u00f6cke in wenigen Minuten","datePublished":"2026-04-11T10:03:03+00:00","dateModified":"2026-06-13T11:05:42+00:00","mainEntityOfPage":{"@id":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/"},"wordCount":869,"commentCount":1,"publisher":{"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"articleSection":["WordPress"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/","url":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/","name":"Dynamische Bl\u00f6cke in wenigen Minuten - realloc&#039;s asylum","isPartOf":{"@id":"https:\/\/ploetner.io\/de\/#website"},"datePublished":"2026-04-11T10:03:03+00:00","dateModified":"2026-06-13T11:05:42+00:00","breadcrumb":{"@id":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ploetner.io\/de\/dynamische-bloecke-in-wenigen-minuten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ploetner.io\/de\/"},{"@type":"ListItem","position":2,"name":"Dynamische Bl\u00f6cke in wenigen Minuten"}]},{"@type":"WebSite","@id":"https:\/\/ploetner.io\/de\/#website","url":"https:\/\/ploetner.io\/de\/","name":"realloc's asylum","description":"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.","publisher":{"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ploetner.io\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/ploetner.io\/de\/#\/schema\/person\/571f8ada841cca782e8001b942e032c8","name":"realloc","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","url":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","contentUrl":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg","width":847,"height":848,"caption":"realloc"},"logo":{"@id":"https:\/\/ploetner.io\/de\/wp-content\/uploads\/sites\/7\/sites\/8\/2022\/11\/52602486_10215993351498483_6040822616506236928_n.jpg"},"description":"Software Developer &amp; WordPress Enthusiast | Born in Germany. Reborn in Italy.","sameAs":["https:\/\/ploetner.io\/"],"url":"https:\/\/ploetner.io\/de\/author\/realloc\/"}]}},"_links":{"self":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/6914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/comments?post=6914"}],"version-history":[{"count":4,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/6914\/revisions"}],"predecessor-version":[{"id":6922,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/posts\/6914\/revisions\/6922"}],"wp:attachment":[{"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/media?parent=6914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/categories?post=6914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ploetner.io\/de\/wp-json\/wp\/v2\/tags?post=6914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}