Skip to content

Commit

Permalink
Editor: Fix post editor layout when Post Content has no attributes.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
tellthemachines committed Sep 20, 2023
1 parent a0cce39 commit bee2dc4
Show file tree
Hide file tree
Showing 7 changed files with 144 additions and 7 deletions.
11 changes: 6 additions & 5 deletions src/wp-includes/block-editor.php
Original file line number Diff line number Diff line change
Expand Up @@ -409,19 +409,20 @@ 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;

$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 );
Expand Down Expand Up @@ -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;
}

/**
Expand Down Expand Up @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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
*/
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<!-- wp:paragraph -->
<p>Index Template</p>
<!-- /wp:paragraph -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<!-- wp:post-title {"level":1,"style":{"spacing":{"margin":{"bottom":"var:preset|spacing|40"}}}} /-->
<!-- wp:post-content /-->
Original file line number Diff line number Diff line change
@@ -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"
}
}
}
}
}
}
}
23 changes: 21 additions & 2 deletions tests/phpunit/tests/blocks/editor.php
Original file line number Diff line number Diff line change
Expand Up @@ -446,14 +446,20 @@ public function test_wp_get_post_content_block_attributes() {
'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
*/
Expand Down Expand Up @@ -527,6 +533,19 @@ public function test_get_block_editor_settings_theme_json_settings() {
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
Expand Down
1 change: 1 addition & 0 deletions tests/phpunit/tests/theme/themeDir.php
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ public function test_theme_list() {
'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',
Expand Down

0 comments on commit bee2dc4

Please sign in to comment.