mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-10-07 08:07:16 +00:00
Block Editor: Include the fixes targetted for WordPress 5.8 RC3.
This includes the following fixes: - Safari: see if compositing layer size is more reasonable when position fixed divs are not inserted into content. - Site Logo Block: update Site Logo block UI and option syncing. - Fix moving inner blocks in the Widgets Customizer. - Allow themes to provide empty values for color.duotone and spacing.units - Update getTermsInfo() to workaround parsing issue for translatable strings. - Specify what settings can be part of settings.layout. - Update conditions to hide duotone panel. - Prevent entering invalid values in the Query Loop block config. - Prevent color panel from showing as empty. - Avoid calling gutenberg_ functions within code shipped through WordPress Core. Props desrosj. See #53397. git-svn-id: https://develop.svn.wordpress.org/trunk@51421 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
*/
|
||||
function render_block_core_site_logo( $attributes ) {
|
||||
$adjust_width_height_filter = function ( $image ) use ( $attributes ) {
|
||||
if ( empty( $attributes['width'] ) ) {
|
||||
if ( empty( $attributes['width'] ) || empty( $image ) ) {
|
||||
return $image;
|
||||
}
|
||||
$height = (float) $attributes['width'] / ( (float) $image[1] / (float) $image[2] );
|
||||
@@ -111,54 +111,52 @@ add_filter( 'theme_mod_custom_logo', '_override_custom_logo_theme_mod' );
|
||||
/**
|
||||
* Updates the site_logo option when the custom_logo theme-mod gets updated.
|
||||
*
|
||||
* This function is hooked on "update_option_theme_mods_$theme" and not
|
||||
* "pre_set_theme_mod_custom_logo" because by hooking in `update_option`
|
||||
* the function accounts for remove_theme_mod() as well.
|
||||
*
|
||||
* @param mixed $old_value The old option value.
|
||||
* @param mixed $value The new option value.
|
||||
* @param mixed $value Attachment ID of the custom logo or an empty value.
|
||||
* @return mixed
|
||||
*/
|
||||
function _sync_custom_logo_to_site_logo( $old_value, $value ) {
|
||||
// Delete the option when the custom logo does not exist or was removed.
|
||||
// This step ensures the option stays in sync.
|
||||
if ( empty( $value['custom_logo'] ) ) {
|
||||
function _sync_custom_logo_to_site_logo( $value ) {
|
||||
if ( empty( $value ) ) {
|
||||
delete_option( 'site_logo' );
|
||||
} else {
|
||||
remove_action( 'update_option_site_logo', '_sync_site_logo_to_custom_logo' );
|
||||
update_option( 'site_logo', $value['custom_logo'] );
|
||||
add_action( 'update_option_site_logo', '_sync_site_logo_to_custom_logo', 10, 2 );
|
||||
update_option( 'site_logo', $value );
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
add_filter( 'pre_set_theme_mod_custom_logo', '_sync_custom_logo_to_site_logo' );
|
||||
|
||||
/**
|
||||
* Deletes the site_logo when the custom_logo theme mod is removed.
|
||||
*
|
||||
* @param array $old_value Previous theme mod settings.
|
||||
* @param array $value Updated theme mod settings.
|
||||
*/
|
||||
function _delete_site_logo_on_remove_custom_logo( $old_value, $value ) {
|
||||
// If the custom_logo is being unset, it's being removed from theme mods.
|
||||
if ( isset( $old_value['custom_logo'] ) && ! isset( $value['custom_logo'] ) ) {
|
||||
delete_option( 'site_logo' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hooks `_sync_custom_logo_to_site_logo` in `update_option_theme_mods_$theme`.
|
||||
* Deletes the site logo when all theme mods are being removed.
|
||||
*/
|
||||
function _delete_site_logo_on_remove_theme_mods() {
|
||||
if ( false !== get_theme_support( 'custom-logo' ) ) {
|
||||
delete_option( 'site_logo' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hooks `_delete_site_logo_on_remove_custom_logo` in `update_option_theme_mods_$theme`.
|
||||
* Hooks `_delete_site_logo_on_remove_theme_mods` in `delete_option_theme_mods_$theme`.
|
||||
*
|
||||
* Runs on `setup_theme` to account for dynamically-switched themes in the Customizer.
|
||||
*/
|
||||
function _sync_custom_logo_to_site_logo_on_setup_theme() {
|
||||
function _delete_site_logo_on_remove_custom_logo_on_setup_theme() {
|
||||
$theme = get_option( 'stylesheet' );
|
||||
add_action( "update_option_theme_mods_$theme", '_sync_custom_logo_to_site_logo', 10, 2 );
|
||||
add_action( "update_option_theme_mods_$theme", '_delete_site_logo_on_remove_custom_logo', 10, 2 );
|
||||
add_action( "delete_option_theme_mods_$theme", '_delete_site_logo_on_remove_theme_mods' );
|
||||
}
|
||||
add_action( 'setup_theme', '_sync_custom_logo_to_site_logo_on_setup_theme', 11 );
|
||||
|
||||
/**
|
||||
* Updates the custom_logo theme-mod when the site_logo option gets updated.
|
||||
*
|
||||
* @param mixed $old_value The old option value.
|
||||
* @param mixed $value The new option value.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function _sync_site_logo_to_custom_logo( $old_value, $value ) {
|
||||
// Delete the option when the custom logo does not exist or was removed.
|
||||
// This step ensures the option stays in sync.
|
||||
if ( empty( $value ) ) {
|
||||
remove_theme_mod( 'custom_logo' );
|
||||
} else {
|
||||
remove_filter( 'pre_set_theme_mod_custom_logo', '_sync_custom_logo_to_site_logo' );
|
||||
set_theme_mod( 'custom_logo', $value );
|
||||
add_filter( 'pre_set_theme_mod_custom_logo', '_sync_custom_logo_to_site_logo' );
|
||||
}
|
||||
}
|
||||
|
||||
add_action( 'update_option_site_logo', '_sync_site_logo_to_custom_logo', 10, 2 );
|
||||
add_action( 'setup_theme', '_delete_site_logo_on_remove_custom_logo_on_setup_theme', 11 );
|
||||
|
||||
Reference in New Issue
Block a user