diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-includes/blocks/post-terms.php
--- a/wp/wp-includes/blocks/post-terms.php Thu Sep 29 08:06:27 2022 +0200
+++ b/wp/wp-includes/blocks/post-terms.php Fri Sep 05 18:40:08 2025 +0200
@@ -8,6 +8,8 @@
/**
* Renders the `core/post-terms` block on the server.
*
+ * @since 5.8.0
+ *
* @param array $attributes Block attributes.
* @param string $content Block default content.
* @param WP_Block $block Block instance.
@@ -27,32 +29,100 @@
return '';
}
- $classes = 'taxonomy-' . $attributes['term'];
+ $classes = array( 'taxonomy-' . $attributes['term'] );
if ( isset( $attributes['textAlign'] ) ) {
- $classes .= ' has-text-align-' . $attributes['textAlign'];
+ $classes[] = 'has-text-align-' . $attributes['textAlign'];
+ }
+ if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
+ $classes[] = 'has-link-color';
}
$separator = empty( $attributes['separator'] ) ? ' ' : $attributes['separator'];
- $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) );
+ $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
+
+ $prefix = "
";
+ if ( isset( $attributes['prefix'] ) && $attributes['prefix'] ) {
+ $prefix .= '' . $attributes['prefix'] . '';
+ }
+
+ $suffix = '
';
+ if ( isset( $attributes['suffix'] ) && $attributes['suffix'] ) {
+ $suffix = '' . $attributes['suffix'] . '' . $suffix;
+ }
return get_the_term_list(
$block->context['postId'],
$attributes['term'],
- "",
+ wp_kses_post( $prefix ),
'' . esc_html( $separator ) . '',
- '
'
+ wp_kses_post( $suffix )
);
}
/**
+ * Returns the available variations for the `core/post-terms` block.
+ *
+ * @since 6.5.0
+ *
+ * @return array The available variations for the block.
+ */
+function block_core_post_terms_build_variations() {
+ $taxonomies = get_taxonomies(
+ array(
+ 'publicly_queryable' => true,
+ 'show_in_rest' => true,
+ ),
+ 'objects'
+ );
+
+ // Split the available taxonomies to `built_in` and custom ones,
+ // in order to prioritize the `built_in` taxonomies at the
+ // search results.
+ $built_ins = array();
+ $custom_variations = array();
+
+ // Create and register the eligible taxonomies variations.
+ foreach ( $taxonomies as $taxonomy ) {
+ $variation = array(
+ 'name' => $taxonomy->name,
+ 'title' => $taxonomy->label,
+ 'description' => sprintf(
+ /* translators: %s: taxonomy's label */
+ __( 'Display a list of assigned terms from the taxonomy: %s' ),
+ $taxonomy->label
+ ),
+ 'attributes' => array(
+ 'term' => $taxonomy->name,
+ ),
+ 'isActive' => array( 'term' ),
+ 'scope' => array( 'inserter', 'transform' ),
+ );
+ // Set the category variation as the default one.
+ if ( 'category' === $taxonomy->name ) {
+ $variation['isDefault'] = true;
+ }
+ if ( $taxonomy->_builtin ) {
+ $built_ins[] = $variation;
+ } else {
+ $custom_variations[] = $variation;
+ }
+ }
+
+ return array_merge( $built_ins, $custom_variations );
+}
+
+/**
* Registers the `core/post-terms` block on the server.
+ *
+ * @since 5.8.0
*/
function register_block_core_post_terms() {
register_block_type_from_metadata(
__DIR__ . '/post-terms',
array(
- 'render_callback' => 'render_block_core_post_terms',
+ 'render_callback' => 'render_block_core_post_terms',
+ 'variation_callback' => 'block_core_post_terms_build_variations',
)
);
}