mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Editor: Fix post editor layout when Post Content has no attributes.
Changes output of `wp_get_post_content_block_attributes` to return null if Post Content block doesn’t exist or empty array if it has no attributes. Props flixos90, mukesh27. Fixes #59358. git-svn-id: https://develop.svn.wordpress.org/trunk@56629 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
a0cce3900e
commit
bee2dc4ba2
@ -409,11 +409,12 @@ function wp_get_first_block( $blocks, $block_name ) {
|
||||
* Retrieves Post Content block attributes from the current post template.
|
||||
*
|
||||
* @since 6.3.0
|
||||
* @since 6.4.0 Return null if there is no post content block.
|
||||
* @access private
|
||||
*
|
||||
* @global int $post_ID
|
||||
*
|
||||
* @return array Post Content block attributes or empty array if they don't exist.
|
||||
* @return array|null Post Content block attributes array or null if Post Content block doesn't exist.
|
||||
*/
|
||||
function wp_get_post_content_block_attributes() {
|
||||
global $post_ID;
|
||||
@ -421,7 +422,7 @@ function wp_get_post_content_block_attributes() {
|
||||
$is_block_theme = wp_is_block_theme();
|
||||
|
||||
if ( ! $is_block_theme || ! $post_ID ) {
|
||||
return array();
|
||||
return null;
|
||||
}
|
||||
|
||||
$template_slug = get_page_template_slug( $post_ID );
|
||||
@ -457,12 +458,12 @@ function wp_get_post_content_block_attributes() {
|
||||
$template_blocks = parse_blocks( $current_template[0]->content );
|
||||
$post_content_block = wp_get_first_block( $template_blocks, 'core/post-content' );
|
||||
|
||||
if ( ! empty( $post_content_block['attrs'] ) ) {
|
||||
if ( isset( $post_content_block['attrs'] ) ) {
|
||||
return $post_content_block['attrs'];
|
||||
}
|
||||
}
|
||||
|
||||
return array();
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -635,7 +636,7 @@ function get_block_editor_settings( array $custom_settings, $block_editor_contex
|
||||
|
||||
$post_content_block_attributes = wp_get_post_content_block_attributes();
|
||||
|
||||
if ( ! empty( $post_content_block_attributes ) ) {
|
||||
if ( isset( $post_content_block_attributes ) ) {
|
||||
$editor_settings['postContentAttributes'] = $post_content_block_attributes;
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
/*
|
||||
Theme Name: Block Theme Post Content Default
|
||||
Theme URI: https://wordpress.org/
|
||||
Description: For testing purposes only.
|
||||
Version: 1.0.0
|
||||
Text Domain: block-theme-post-content-default
|
||||
*/
|
||||
@ -0,0 +1,3 @@
|
||||
<!-- wp:paragraph -->
|
||||
<p>Index Template</p>
|
||||
<!-- /wp:paragraph -->
|
||||
@ -0,0 +1,2 @@
|
||||
<!-- wp:post-title {"level":1,"style":{"spacing":{"margin":{"bottom":"var:preset|spacing|40"}}}} /-->
|
||||
<!-- wp:post-content /-->
|
||||
@ -0,0 +1,104 @@
|
||||
{
|
||||
"version": 1,
|
||||
"title": "Block theme",
|
||||
"settings": {
|
||||
"color": {
|
||||
"palette": [
|
||||
{
|
||||
"slug": "light",
|
||||
"name": "Light",
|
||||
"color": "#f5f7f9"
|
||||
},
|
||||
{
|
||||
"slug": "dark",
|
||||
"name": "Dark",
|
||||
"color": "#000"
|
||||
}
|
||||
],
|
||||
"gradients": [
|
||||
{
|
||||
"name": "Custom gradient",
|
||||
"gradient": "linear-gradient(135deg,rgba(0,0,0) 0%,rgb(0,0,0) 100%)",
|
||||
"slug": "custom-gradient"
|
||||
}
|
||||
],
|
||||
"duotone": [
|
||||
{
|
||||
"colors": [ "#333333", "#aaaaaa" ],
|
||||
"slug": "custom-duotone",
|
||||
"name": "Custom Duotone"
|
||||
}
|
||||
],
|
||||
"custom": false,
|
||||
"customGradient": false
|
||||
},
|
||||
"typography": {
|
||||
"fontSizes": [
|
||||
{
|
||||
"name": "Custom",
|
||||
"slug": "custom",
|
||||
"size": "100px"
|
||||
}
|
||||
],
|
||||
"customFontSize": false,
|
||||
"customLineHeight": true
|
||||
},
|
||||
"spacing": {
|
||||
"units": ["rem"],
|
||||
"customPadding": true,
|
||||
"blockGap": true
|
||||
},
|
||||
"blocks": {
|
||||
"core/paragraph": {
|
||||
"color": {
|
||||
"palette": [
|
||||
{
|
||||
"slug": "light",
|
||||
"name": "Light",
|
||||
"color": "#f5f7f9"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"styles" : {
|
||||
"blocks" :{
|
||||
"core/post-featured-image": {
|
||||
"shadow": "10px 10px 5px 0px rgba(0,0,0,0.66)",
|
||||
"filter": {
|
||||
"duotone": "var(--wp--preset--duotone--custom-duotone)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"elements": {
|
||||
"button": {
|
||||
"shadow": "10px 10px 5px 0px rgba(0,0,0,0.66)"
|
||||
},
|
||||
"link": {
|
||||
"typography": {
|
||||
"textDecoration": "none"
|
||||
},
|
||||
"border": {
|
||||
"bottom": {
|
||||
"width": "2px",
|
||||
"color": "currentColor",
|
||||
"style": "solid"
|
||||
}
|
||||
},
|
||||
":hover": {
|
||||
"typography": {
|
||||
"textDecoration": "none"
|
||||
},
|
||||
"border": {
|
||||
"bottom": {
|
||||
"width": "2px",
|
||||
"color": "#000",
|
||||
"style": "dotted"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -446,14 +446,20 @@ class Tests_Blocks_Editor extends WP_UnitTestCase {
|
||||
'type' => 'constrained',
|
||||
),
|
||||
);
|
||||
// With no block theme, expect an empty array.
|
||||
$this->assertSame( array(), wp_get_post_content_block_attributes() );
|
||||
// With no block theme, expect null.
|
||||
$this->assertNull( wp_get_post_content_block_attributes() );
|
||||
|
||||
switch_theme( 'block-theme' );
|
||||
|
||||
$this->assertSame( $attributes_with_layout, wp_get_post_content_block_attributes() );
|
||||
}
|
||||
|
||||
public function test_wp_get_post_content_block_attributes_no_layout() {
|
||||
switch_theme( 'block-theme-post-content-default' );
|
||||
|
||||
$this->assertSame( array(), wp_get_post_content_block_attributes() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 53458
|
||||
*/
|
||||
@ -527,6 +533,19 @@ class Tests_Blocks_Editor extends WP_UnitTestCase {
|
||||
switch_theme( WP_DEFAULT_THEME );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 59358
|
||||
*/
|
||||
public function test_get_block_editor_settings_without_post_content_block() {
|
||||
|
||||
$post_editor_context = new WP_Block_Editor_Context( array( 'post' => get_post() ) );
|
||||
|
||||
$settings = get_block_editor_settings( array(), $post_editor_context );
|
||||
|
||||
$this->assertArrayNotHasKey( 'postContentAttributes', $settings );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 52920
|
||||
* @expectedDeprecated block_editor_settings
|
||||
|
||||
@ -185,6 +185,7 @@ class Tests_Theme_ThemeDir extends WP_UnitTestCase {
|
||||
'Block Theme [0.4.0]',
|
||||
'Block Theme [1.0.0] in subdirectory',
|
||||
'Block Theme Deprecated Path',
|
||||
'Block Theme Post Content Default',
|
||||
'Block Theme with defined Typography Fonts',
|
||||
'Empty `fontFace` in theme.json - no webfonts defined',
|
||||
'A theme with the Update URI header',
|
||||
|
||||
Loading…
Reference in New Issue
Block a user