render_block_core_site_logo

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

WordPress Version: 6.3

/**
 * Server-side rendering of the `core/site-logo` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/site-logo` block on the server.
 *
 * @param array $attributes The block attributes.
 *
 * @return string The render.
 */
function render_block_core_site_logo($attributes)
{
    $adjust_width_height_filter = static function ($image) use ($attributes) {
        if (empty($attributes['width']) || empty($image) || !$image[1] || !$image[2]) {
            return $image;
        }
        $height = (float) $attributes['width'] / ((float) $image[1] / (float) $image[2]);
        return array($image[0], (int) $attributes['width'], (int) $height);
    };
    add_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    $custom_logo = get_custom_logo();
    remove_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    if (empty($custom_logo)) {
        return '';
        // Return early if no custom logo is set, avoiding extraneous wrapper div.
    }
    if (!$attributes['isLink']) {
        // Remove the link.
        $custom_logo = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $custom_logo);
    }
    if ($attributes['isLink'] && '_blank' === $attributes['linkTarget']) {
        // Add the link target after the rel="home".
        // Add an aria-label for informing that the page opens in a new tab.
        $processor = new WP_HTML_Tag_Processor($custom_logo);
        $processor->next_tag('a');
        if ('home' === $processor->get_attribute('rel')) {
            $processor->set_attribute('aria-label', __('(Home link, opens in a new tab)'));
            $processor->set_attribute('target', $attributes['linkTarget']);
        }
        $custom_logo = $processor->get_updated_html();
    }
    $classnames = array();
    if (empty($attributes['width'])) {
        $classnames[] = 'is-default-size';
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => implode(' ', $classnames)));
    $html = sprintf('<div %s>%s</div>', $wrapper_attributes, $custom_logo);
    return $html;
}

WordPress Version: 6.1

/**
 * Server-side rendering of the `core/site-logo` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/site-logo` block on the server.
 *
 * @param array $attributes The block attributes.
 *
 * @return string The render.
 */
function render_block_core_site_logo($attributes)
{
    $adjust_width_height_filter = function ($image) use ($attributes) {
        if (empty($attributes['width']) || empty($image) || !$image[1] || !$image[2]) {
            return $image;
        }
        $height = (float) $attributes['width'] / ((float) $image[1] / (float) $image[2]);
        return array($image[0], (int) $attributes['width'], (int) $height);
    };
    add_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    $custom_logo = get_custom_logo();
    remove_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    if (empty($custom_logo)) {
        return '';
        // Return early if no custom logo is set, avoiding extraneous wrapper div.
    }
    if (!$attributes['isLink']) {
        // Remove the link.
        $custom_logo = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $custom_logo);
    }
    if ($attributes['isLink'] && '_blank' === $attributes['linkTarget']) {
        // Add the link target after the rel="home".
        // Add an aria-label for informing that the page opens in a new tab.
        $aria_label = 'aria-label="' . esc_attr__('(Home link, opens in a new tab)') . '"';
        $custom_logo = str_replace('rel="home"', 'rel="home" target="' . esc_attr($attributes['linkTarget']) . '"' . $aria_label, $custom_logo);
    }
    $classnames = array();
    if (empty($attributes['width'])) {
        $classnames[] = 'is-default-size';
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => implode(' ', $classnames)));
    $html = sprintf('<div %s>%s</div>', $wrapper_attributes, $custom_logo);
    return $html;
}

WordPress Version: 9.1

/**
 * Server-side rendering of the `core/site-logo` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/site-logo` block on the server.
 *
 * @param array $attributes The block attributes.
 *
 * @return string The render.
 */
function render_block_core_site_logo($attributes)
{
    $adjust_width_height_filter = function ($image) use ($attributes) {
        if (empty($attributes['width']) || empty($image) || !$image[1] || !$image[2]) {
            return $image;
        }
        $height = (float) $attributes['width'] / ((float) $image[1] / (float) $image[2]);
        return array($image[0], (int) $attributes['width'], (int) $height);
    };
    add_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    $custom_logo = get_custom_logo();
    remove_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    if (empty($custom_logo)) {
        return '';
        // Return early if no custom logo is set, avoiding extraneous wrapper div.
    }
    if (!$attributes['isLink']) {
        // Remove the link.
        $custom_logo = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $custom_logo);
    }
    if ($attributes['isLink'] && '_blank' === $attributes['linkTarget']) {
        // Add the link target after the rel="home".
        // Add an aria-label for informing that the page opens in a new tab.
        $aria_label = 'aria-label="' . esc_attr__('(Home link, opens in a new tab)') . '"';
        $custom_logo = str_replace('rel="home"', 'rel="home" target="' . $attributes['linkTarget'] . '"' . $aria_label, $custom_logo);
    }
    $classnames = array();
    if (!empty($attributes['className'])) {
        $classnames[] = $attributes['className'];
    }
    if (empty($attributes['width'])) {
        $classnames[] = 'is-default-size';
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => implode(' ', $classnames)));
    $html = sprintf('<div %s>%s</div>', $wrapper_attributes, $custom_logo);
    return $html;
}

WordPress Version: 5.9

/**
 * Server-side rendering of the `core/site-logo` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/site-logo` block on the server.
 *
 * @param array $attributes The block attributes.
 *
 * @return string The render.
 */
function render_block_core_site_logo($attributes)
{
    $adjust_width_height_filter = function ($image) use ($attributes) {
        if (empty($attributes['width']) || empty($image)) {
            return $image;
        }
        $height = (float) $attributes['width'] / ((float) $image[1] / (float) $image[2]);
        return array($image[0], (int) $attributes['width'], (int) $height);
    };
    add_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    $custom_logo = get_custom_logo();
    remove_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    if (empty($custom_logo)) {
        return '';
        // Return early if no custom logo is set, avoiding extraneous wrapper div.
    }
    if (!$attributes['isLink']) {
        // Remove the link.
        $custom_logo = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $custom_logo);
    }
    if ($attributes['isLink'] && '_blank' === $attributes['linkTarget']) {
        // Add the link target after the rel="home".
        // Add an aria-label for informing that the page opens in a new tab.
        $aria_label = 'aria-label="' . esc_attr__('(Home link, opens in a new tab)') . '"';
        $custom_logo = str_replace('rel="home"', 'rel="home" target="' . $attributes['linkTarget'] . '"' . $aria_label, $custom_logo);
    }
    $classnames = array();
    if (!empty($attributes['className'])) {
        $classnames[] = $attributes['className'];
    }
    if (empty($attributes['width'])) {
        $classnames[] = 'is-default-size';
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => implode(' ', $classnames)));
    $html = sprintf('<div %s>%s</div>', $wrapper_attributes, $custom_logo);
    return $html;
}

WordPress Version: 5.8

/**
 * Server-side rendering of the `core/site-logo` block.
 *
 * @package WordPress
 */
/**
 * Renders the `core/site-logo` block on the server.
 *
 * @param array $attributes The block attributes.
 *
 * @return string The render.
 */
function render_block_core_site_logo($attributes)
{
    $adjust_width_height_filter = function ($image) use ($attributes) {
        if (empty($attributes['width']) || empty($image)) {
            return $image;
        }
        $height = (float) $attributes['width'] / ((float) $image[1] / (float) $image[2]);
        return array($image[0], (int) $attributes['width'], (int) $height);
    };
    add_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    $custom_logo = get_custom_logo();
    remove_filter('wp_get_attachment_image_src', $adjust_width_height_filter);
    if (empty($custom_logo)) {
        return '';
        // Return early if no custom logo is set, avoiding extraneous wrapper div.
    }
    if (!$attributes['isLink']) {
        // Remove the link.
        $custom_logo = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $custom_logo);
    }
    if ($attributes['isLink'] && '_blank' === $attributes['linkTarget']) {
        // Add the link target after the rel="home".
        // Add an aria-label for informing that the page opens in a new tab.
        $aria_label = 'aria-label="' . esc_attr__('(Home link, opens in a new tab)') . '"';
        $custom_logo = str_replace('rel="home"', 'rel="home" target="' . $attributes['linkTarget'] . '"' . $aria_label, $custom_logo);
    }
    $classnames = array();
    if (!empty($attributes['className'])) {
        $classnames[] = $attributes['className'];
    }
    if (!empty($attributes['align']) && in_array($attributes['align'], array('center', 'left', 'right'), true)) {
        $classnames[] = "align{$attributes['align']}";
    }
    if (empty($attributes['width'])) {
        $classnames[] = 'is-default-size';
    }
    $wrapper_attributes = get_block_wrapper_attributes(array('class' => implode(' ', $classnames)));
    $html = sprintf('<div %s>%s</div>', $wrapper_attributes, $custom_logo);
    return $html;
}