Skip to content

Commit

Permalink
include the site-logo block
Browse files Browse the repository at this point in the history
  • Loading branch information
aristath committed May 21, 2021
1 parent fec87f0 commit 81f8a46
Show file tree
Hide file tree
Showing 5 changed files with 139 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/wp-includes/blocks/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
require ABSPATH . WPINC . '/blocks/search.php';
require ABSPATH . WPINC . '/blocks/shortcode.php';
require ABSPATH . WPINC . '/blocks/site-tagline.php';
require ABSPATH . WPINC . '/blocks/site-logo.php';
require ABSPATH . WPINC . '/blocks/site-title.php';
require ABSPATH . WPINC . '/blocks/social-link.php';
require ABSPATH . WPINC . '/blocks/tag-cloud.php';
Expand Down
75 changes: 75 additions & 0 deletions src/wp-includes/blocks/site-logo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php
/**
* 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'] ) ) {
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();

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 );
remove_filter( 'wp_get_attachment_image_src', $adjust_width_height_filter );
return $html;
}


/**
* Registers the `core/site-logo` block on the server.
*/
function register_block_core_site_logo() {
register_block_type_from_metadata(
__DIR__ . '/site-logo',
array(
'render_callback' => 'render_block_core_site_logo',
)
);
}
add_action( 'init', 'register_block_core_site_logo' );
39 changes: 39 additions & 0 deletions src/wp-includes/blocks/site-logo/block.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"apiVersion": 2,
"name": "core/site-logo",
"title": "Site Logo",
"category": "layout",
"description": "Useful for displaying a graphic mark, design, or symbol to represent the site. Once a site logo is set, it can be reused in different places and templates. It should not be confused with the site icon, which is the small image used in the dashboard, browser tabs, public search results, etc, to help recognize a site.",
"textdomain": "default",
"attributes": {
"align": {
"type": "string"
},
"width": {
"type": "number"
},
"isLink": {
"type": "boolean",
"default": true
},
"linkTarget": {
"type": "string",
"default": "_self"
}
},
"supports": {
"html": false,
"align": true,
"alignWide": false
},
"styles": [
{
"name": "default",
"label": "Default",
"isDefault": true
},
{ "name": "rounded", "label": "Rounded" }
],
"editorStyle": "wp-block-site-logo-editor",
"style": "wp-block-site-logo"
}
23 changes: 23 additions & 0 deletions tests/qunit/fixtures/wp-api-generated.js
Original file line number Diff line number Diff line change
Expand Up @@ -6108,6 +6108,20 @@ mockedApiResponse.Schema = {
"PATCH"
],
"args": {
"theme_mods_default": {
"description": "",
"type": "object",
"properties": {
"custom_logo": {
"type": [
"integer",
"boolean"
]
}
},
"additionalProperties": false,
"required": false
},
"title": {
"description": "Site title.",
"type": "string",
Expand All @@ -6118,6 +6132,11 @@ mockedApiResponse.Schema = {
"type": "string",
"required": false
},
"stylesheet": {
"description": "",
"type": "string",
"required": false
},
"url": {
"description": "Site URL.",
"type": "string",
Expand Down Expand Up @@ -7997,8 +8016,12 @@ mockedApiResponse.CommentModel = {
};

mockedApiResponse.settings = {
"theme_mods_default": {
"custom_logo": false
},
"title": "Test Blog",
"description": "Just another WordPress site",
"stylesheet": "default",
"url": "http://example.org",
"email": "[email protected]",
"timezone": "",
Expand Down
1 change: 1 addition & 0 deletions tools/webpack/packages.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ module.exports = function( env = { environment: 'production', watch: false, buil
'rss',
'search',
'shortcode',
'site-logo',
'site-tagline',
'site-title',
'social-link',
Expand Down

0 comments on commit 81f8a46

Please sign in to comment.