mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Editor: Include the PHP file for the Cover block
This file is copied by the build process but it also needs to be versioned so unit tests can run without issues. Follow-up [53212]. See #55580. git-svn-id: https://develop.svn.wordpress.org/trunk@53213 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
8fafc11932
commit
7e65fcbbef
85
src/wp-includes/blocks/cover.php
Normal file
85
src/wp-includes/blocks/cover.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/cover` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/cover` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
* @param array $content The block rendered content.
|
||||
*
|
||||
* @return string Returns the cover block markup, if useFeaturedImage is true.
|
||||
*/
|
||||
function render_block_core_cover( $attributes, $content ) {
|
||||
if ( false === $attributes['useFeaturedImage'] ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
$current_featured_image = get_the_post_thumbnail_url();
|
||||
|
||||
if ( false === $current_featured_image ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
$is_img_element = ! ( $attributes['hasParallax'] || $attributes['isRepeated'] );
|
||||
$is_image_background = 'image' === $attributes['backgroundType'];
|
||||
|
||||
if ( $is_image_background && ! $is_img_element ) {
|
||||
$content = preg_replace(
|
||||
'/class=\".*?\"/',
|
||||
'${0} style="background-image:url(' . esc_url( $current_featured_image ) . ')"',
|
||||
$content,
|
||||
1
|
||||
);
|
||||
}
|
||||
|
||||
if ( $is_image_background && $is_img_element ) {
|
||||
$object_position = '';
|
||||
if ( isset( $attributes['focalPoint'] ) ) {
|
||||
$object_position = round( $attributes['focalPoint']['x'] * 100 ) . '%' . ' ' .
|
||||
round( $attributes['focalPoint']['x'] * 100 ) . '%';
|
||||
}
|
||||
|
||||
$image_template = '<img
|
||||
class="wp-block-cover__image-background"
|
||||
alt="%s"
|
||||
src="%s"
|
||||
style="object-position: %s"
|
||||
data-object-fit="cover"
|
||||
data-object-position="%s"
|
||||
/>';
|
||||
|
||||
$image = sprintf(
|
||||
$image_template,
|
||||
esc_attr( get_the_post_thumbnail_caption() ),
|
||||
esc_url( $current_featured_image ),
|
||||
esc_attr( $object_position ),
|
||||
esc_attr( $object_position )
|
||||
);
|
||||
|
||||
$content = str_replace(
|
||||
'</span><div',
|
||||
'</span>' . $image . '<div',
|
||||
$content
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/cover` block renderer on server.
|
||||
*/
|
||||
function register_block_core_cover() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/cover',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_cover',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_cover' );
|
||||
Loading…
Reference in New Issue
Block a user