render_block_core_post_terms

The timeline below displays how wordpress function render_block_core_post_terms has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.2

/**
 * Server-side rendering of the `core/post-terms` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/post-terms` block on the server.
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 * @return string Returns the filtered post terms for the current post wrapped inside "a" tags.
 */
function render_block_core_post_terms($attributes, $content, $block)
{
    if (!isset($block->context['postId']) || !isset($attributes['term'])) {
        return '';
    }
    if (!is_taxonomy_viewable($attributes['term'])) {
        return '';
    }
    $post_terms = get_the_terms($block->context['postId'], $attributes['term']);
    if (is_wp_error($post_terms) || empty($post_terms)) {
        return '';
    }
    $classes = array('taxonomy-' . $attributes['term']);
    if (isset($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' => implode(' ', $classes)));
    $prefix = "<div {$wrapper_attributes}>";
    if (isset($attributes['prefix']) && $attributes['prefix']) {
        $prefix .= '<span class="wp-block-post-terms__prefix">' . $attributes['prefix'] . '</span>';
    }
    $suffix = '</div>';
    if (isset($attributes['suffix']) && $attributes['suffix']) {
        $suffix = '<span class="wp-block-post-terms__suffix">' . $attributes['suffix'] . '</span>' . $suffix;
    }
    return get_the_term_list($block->context['postId'], $attributes['term'], wp_kses_post($prefix), '<span class="wp-block-post-terms__separator">' . esc_html($separator) . '</span>', wp_kses_post($suffix));
}

WordPress Version: 6.1

/**
 * Server-side rendering of the `core/post-terms` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/post-terms` block on the server.
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 * @return string Returns the filtered post terms for the current post wrapped inside "a" tags.
 */
function render_block_core_post_terms($attributes, $content, $block)
{
    if (!isset($block->context['postId']) || !isset($attributes['term'])) {
        return '';
    }
    if (!is_taxonomy_viewable($attributes['term'])) {
        return '';
    }
    $post_terms = get_the_terms($block->context['postId'], $attributes['term']);
    if (is_wp_error($post_terms) || empty($post_terms)) {
        return '';
    }
    $classes = 'taxonomy-' . $attributes['term'];
    if (isset($attributes['textAlign'])) {
        $classes .= ' has-text-align-' . $attributes['textAlign'];
    }
    $separator = empty($attributes['separator']) ? ' ' : $attributes['separator'];
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => $classes));
    $prefix = "<div {$wrapper_attributes}>";
    if (isset($attributes['prefix']) && $attributes['prefix']) {
        $prefix .= '<span class="wp-block-post-terms__prefix">' . $attributes['prefix'] . '</span>';
    }
    $suffix = '</div>';
    if (isset($attributes['suffix']) && $attributes['suffix']) {
        $suffix = '<span class="wp-block-post-terms__suffix">' . $attributes['suffix'] . '</span>' . $suffix;
    }
    return get_the_term_list($block->context['postId'], $attributes['term'], wp_kses_post($prefix), '<span class="wp-block-post-terms__separator">' . esc_html($separator) . '</span>', wp_kses_post($suffix));
}

WordPress Version: 5.9

/**
 * Server-side rendering of the `core/post-terms` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/post-terms` block on the server.
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 * @return string Returns the filtered post terms for the current post wrapped inside "a" tags.
 */
function render_block_core_post_terms($attributes, $content, $block)
{
    if (!isset($block->context['postId']) || !isset($attributes['term'])) {
        return '';
    }
    if (!is_taxonomy_viewable($attributes['term'])) {
        return '';
    }
    $post_terms = get_the_terms($block->context['postId'], $attributes['term']);
    if (is_wp_error($post_terms) || empty($post_terms)) {
        return '';
    }
    $classes = 'taxonomy-' . $attributes['term'];
    if (isset($attributes['textAlign'])) {
        $classes .= ' has-text-align-' . $attributes['textAlign'];
    }
    $separator = empty($attributes['separator']) ? ' ' : $attributes['separator'];
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => $classes));
    return get_the_term_list($block->context['postId'], $attributes['term'], "<div {$wrapper_attributes}>", '<span class="wp-block-post-terms__separator">' . $separator . '</span>', '</div>');
}

WordPress Version: 5.8

/**
 * Server-side rendering of the `core/post-terms` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/post-terms` block on the server.
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 * @return string Returns the filtered post terms for the current post wrapped inside "a" tags.
 */
function render_block_core_post_terms($attributes, $content, $block)
{
    if (!isset($block->context['postId']) || !isset($attributes['term'])) {
        return '';
    }
    if (!is_taxonomy_viewable($attributes['term'])) {
        return '';
    }
    $post_terms = get_the_terms($block->context['postId'], $attributes['term']);
    if (is_wp_error($post_terms)) {
        return '';
    }
    if (empty($post_terms)) {
        return '';
    }
    $align_class_name = empty($attributes['textAlign']) ? '' : (' ' . "has-text-align-{$attributes['textAlign']}");
    $terms_links = '';
    foreach ($post_terms as $term) {
        $terms_links .= sprintf('<a href="%1$s">%2$s</a> | ', get_term_link($term->term_id), esc_html($term->name));
    }
    $terms_links = trim($terms_links, ' | ');
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => $align_class_name));
    return sprintf('<div %1$s>%2$s</div>', $wrapper_attributes, $terms_links);
}