How can a default site icon be set in customizer?

From my research there are only two questions I've found around this topic on this site:

outside of the site I did find:

but when I try:

function default_icon() {
  global $wp_customize;
  $wp_customize-get_setting('site_icon',array (
    'default' = home_url() . 'img/test.png'
  ));
}
add_action('customize_register','default_icon');

I've also tried add_setting with:

function default_icon() {
  global $wp_customize;
  $wp_customize-add_setting('site_icon', array(
    'default' = home_url() . 'img/test.png'
));
}
add_action('customize_register','default_icon');

but that doesn't work either. It will not show the default icon in the drag and drop area and renders "No Image selected":

In my functions.php how can I code my theme to render the default icon presently being used in the drag and drop area?

After further testing I can set the default when I code:

add_action('customize_register','default_icon',10,2);

and I can see it in a dump of $wp_customize but as far as rendering it will not.

Topic theme-customizer icon Wordpress

Category Web


The site icon is not a theme setting, so the the theme should not be supplying a default.

edit: source: Wordpress Theme Handbook - Customizer Objects

Note: themes generally should not modify core sections and panels with the get methods, since themes should not modify core, theme-agnostic functionality. Plugins are encouraged to use these functions where necessary. Themes should not “reorganize” customizer sections that aren’t added by the theme.


You can see the customizer API to set default icon. This should do the trick, I guess:

function mytheme_customize_register( $wp_customize ) {

    $wp_customize->add_setting( 'site_icon' , array(
        'default'     => get_bloginfo('template_url') . '/images/logo.png',
    ) );

}
add_action( 'customize_register', 'mytheme_customize_register' );

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.