PHP
<?php
/**
* Admin-Seite: Alle registrierten Blöcke auflisten
*/
add_action('admin_menu', function () {
add_management_page(
'Verfügbare Blöcke',
'Verfügbare Blöcke',
'manage_options',
'available-blocks',
function () {
$registry = WP_Block_Type_Registry::get_instance();
$all = $registry->get_all_registered();
// Sortieren nach Namespace/Name
ksort($all);
echo '<div class="wrap"><h1>Verfügbare Blöcke</h1>';
echo '<p>Quelle = "core" oder der Namespace des Plugins/Themes (alles vor dem Slash).</p>';
echo '<table class="widefat striped"><thead><tr>';
echo '<th>#</th><th>Block Name</th><th>Title</th><th>Quelle</th><th>Render (PHP)</th>';
echo '</tr></thead><tbody>';
$i = 1;
foreach ($all as $name => $type) {
$ns = strpos($name, '/') !== false ? strtok($name, '/') : $name;
$title = isset($type->title) ? esc_html($type->title) : '';
$has_render = !empty($type->render_callback) ? 'ja' : 'nein';
printf(
'<tr><td>%d</td><td><code>%s</code></td><td>%s</td><td><code>%s</code></td><td>%s</td></tr>',
$i++,
esc_html($name),
$title,
esc_html($ns),
esc_html($has_render)
);
}
echo '</tbody></table>';
echo '<p><em>Hinweis:</em> „Render (PHP) = ja“ bedeutet, dass der Block serverseitig rendert (Dynamic Block).</p>';
echo '</div>';
}
);
});