[wp-trac] [WordPress Trac] #35982: The new feature 'site logo' is not working on-the-fly (postMessage)

WordPress Trac noreply at wordpress.org
Wed Mar 2 18:08:58 UTC 2016

#35982: The new feature 'site logo' is not working on-the-fly (postMessage)
 Reporter:  sidati             |       Owner:  westonruter
     Type:  defect (bug)       |      Status:  accepted
 Priority:  normal             |   Milestone:  4.5
Component:  Customize          |     Version:  trunk
 Severity:  normal             |  Resolution:
 Keywords:  reporter-feedback  |     Focuses:  javascript
Changes (by westonruter):

 * keywords:   => reporter-feedback
 * owner:   => westonruter
 * status:  new => accepted
 * milestone:  Awaiting Review => 4.5


 This sounds an issue related to Selective Refresh (#27355), where the site
 logo gets rendered with PHP filters applied after an initial purely JS
 preview. I haven't been able to reproduce the issue with the entire
 preview not refreshing in Twenty Sixteen. Note that in Core, the
 `site_logo` setting is already added with `postMessage`:

 $this->add_setting( 'site_logo', array(
         'theme_supports' => array( 'site-logo' ),
         'transport'      => 'postMessage',
 ) );

 Is your site logo including the `site-logo-link` CSS class name as is
 output by `get_the_site_logo()`? Selective refresh will be looking for an
 element with this class. Here is how the `site_logo` partial is registered
 in `WP_Customize_Manager::register_controls()`:

 $this->selective_refresh->add_partial( 'site_logo', array(
         'settings'            => array( 'site_logo' ),
         'selector'            => '.site-logo-link',
         'render_callback'     => array( $this, '_render_site_logo_partial'
         'container_inclusive' => true,
 ) );

 If Selective Refresh doesn't find the element indicated by the `selector`,
 it will trigger a refresh by default.

 Two options I see for you to try:

 1) Adjust the selector to match what your theme is actually using if you
 have modified the output of `get_the_site_logo`:

 add_action( 'customize_register', function( $wp_customize ) {
     $new_selector = '.my-site-logo';
     $wp_customize->selective_refresh->get_partial( 'site_logo' )->selector
 = $new_selector;
 }, 20 );

 2) Or, you can disable `fallback_refresh` entirely (which might be what we
 want to do in Core):

 add_action( 'customize_register', function( $wp_customize ) {
     $wp_customize->selective_refresh->get_partial( 'site_logo'
 )->fallback_refresh = false;
 }, 20 );

 The downside if the selector isn't fixed is that the “Shift+click” to edit
 won't work, and there will be an extra Ajax request to render the partial
 but there won't be anything to render it into, so it will be wasted.

Ticket URL: <https://core.trac.wordpress.org/ticket/35982#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list