View source
<?php
function gutenberg_render_block_core_tag_cloud($attributes) {
$class = isset($attributes['align']) ? "wp-block-tag-cloud align{$attributes['align']}" : 'wp-block-tag-cloud';
if (isset($attributes['className'])) {
$class .= ' ' . $attributes['className'];
}
$args = array(
'echo' => false,
'taxonomy' => $attributes['taxonomy'],
'show_count' => $attributes['showTagCounts'],
);
$tag_cloud = wp_tag_cloud($args);
if (!$tag_cloud) {
$labels = get_taxonomy_labels(get_taxonomy($attributes['taxonomy']));
$tag_cloud = esc_html(sprintf(__('Your site doesn’t have any %s, so there’s nothing to display here at the moment.'), strtolower($labels->name)));
}
return sprintf('<p class="%1$s">%2$s</p>', esc_attr($class), $tag_cloud);
}
function gutenberg_register_block_core_tag_cloud() {
register_block_type('core/tag-cloud', array(
'attributes' => array(
'align' => array(
'type' => 'string',
'enum' => array(
'left',
'center',
'right',
'wide',
'full',
),
),
'className' => array(
'type' => 'string',
),
'taxonomy' => array(
'type' => 'string',
'default' => 'post_tag',
),
'showTagCounts' => array(
'type' => 'boolean',
'default' => false,
),
),
'render_callback' => 'gutenberg_render_block_core_tag_cloud',
));
}
add_action('init', 'gutenberg_register_block_core_tag_cloud', 20);