I've seen theme support (add_theme_support) for "custom-header", "custom-background" and "custom-logo", but not for footer (footer colur or image).

Is there no option to let users choose footer color or image via "Appearance" --> "Customize"?

Thank you for your advice!

2 Answers 2


You can use following class put inside your theme's functions.php file. Theme Customization API will render the custom color selector control on the Theme customizer from this.

class MyTheme_Customize {
public static function register ( $wp_customize ) {
$wp_customize->add_section( 'mytheme_options', 
'title'       => __('MyTheme Options RR', 'twentynineteen' ), //Visible title of section
'priority'    => 3, //Determines what order this appears in
'capability'  => 'edit_theme_options', //Capability needed to tweak
'description' => __('Allows you to customize some example settings for MyTheme.', 'twentynineteen'), //Descriptive tooltip

//2. Register new settings to the WP database...
$wp_customize->add_setting( 'link_textcolor',
'default'    => '#333333', //Default setting/value to save
'type'       => 'theme_mod', //Is this an 'option' or a 'theme_mod'?
'capability' => 'edit_theme_options', //Optional. Special permissions for accessing this setting.
'transport'  => 'refresh', //What triggers a refresh of the setting? 'refresh' or 'postMessage' (instant)?
'sanitize_callback'  => 'esc_attr', //sanitization (optional?)

//3. Finally, we define the control itself (which links a setting to a section and renders the HTML controls)...
$wp_customize->add_control( new WP_Customize_Color_Control(
$wp_customize, //Pass the $wp_customize object (required)
'mytheme_link_textcolor', //Set a unique ID for the control
'label'      => __( 'Footer Background Color', 'twentynineteen' ), //Admin-visible name of the control
'settings'   => 'link_textcolor', //Which setting to load and manipulate (serialized is okay)
'priority'   => 10, //Determines the order this control appears in for the specified section
'section'    => 'colors', //ID of the section this control should render in (can be one of yours, or a WordPress default section)
) );

//4. We can also change built-in settings by modifying properties. For instance, let's make some stuff use live preview JS...
$wp_customize->get_setting( 'blogname' )->transport = 'refresh';
$wp_customize->get_setting( 'blogdescription' )->transport = 'refresh';
$wp_customize->get_setting( 'header_textcolor' )->transport = 'refresh';
$wp_customize->get_setting( 'background_color' )->transport = 'refresh';


public static function header_output() {
<!--Theme Customizer CSS--> 
<style type="text/css"> 
<?php self::generate_css('#footer', 'color', 'link_textcolor'); ?>
<!--/Theme Customizer CSS-->

public static function generate_css( $selector, $style, $mod_name, $prefix='', $postfix='', $echo=true ) {
$return = '';
$mod = get_theme_mod($mod_name);
if ( ! empty( $mod ) ) {
$return = sprintf('%s { %s:%s; }',
if ( $echo ) {
echo $return;
return $return;

// Setup the Theme Customizer settings and controls...
add_action( 'customize_register' , array( 'MyTheme_Customize' , 'register' ) );

// Output custom CSS to live site
add_action( 'wp_head' , array( 'MyTheme_Customize' , 'header_output' ) );

Note: You should change theme name (twentynineteen) to your theme's name. just use search and replace

  • Thank you @Vishwa for this! It works perfectly, I couldn't have done this without your help! Thanks heaps!!
    – Joey
    Commented Apr 25, 2019 at 3:59
  • Glad to be a help @Joey. anyway, if this works for you, you can upvote/accept it so it'll be helpful to someone else
    – Vishwa
    Commented Apr 25, 2019 at 4:01
  • Thanks @Vishwa, I've just accepted and upvoted (but I don't have enough reputation to change the publicly-displayed score). By the way, upon testing with theme checker, it says "Found a Customizer setting that did not have a sanitization callback function.". Adding 'sanitize_callback' => 'sanitize_hex_color' just under 'transport' => 'refresh' has removed the warning, but did I do it correctly?
    – Joey
    Commented Apr 25, 2019 at 4:22
  • @Joey yes, it's one way of doing that. I added another way I found. just use whatever works for your situation :)
    – Vishwa
    Commented Apr 25, 2019 at 4:34
  • Great, thank you @Vishwa for enlightening me!
    – Joey
    Commented Apr 25, 2019 at 4:53

I have the same query but i need to add color, fontsize and fontstyle at header and footer both. if i add this function to my custom theme then it shows color options for footer
at customizer only its not changing color at the frontend.

Thank you in advance Babita

  • Can you check the frontend in your browser's debug tools to make sure that the added CSS is there (search for "Theme Customizer CSS"), that the class names are correct and that it appears after the CSS you're trying to override from the theme?
    – Rup
    Commented Feb 22, 2021 at 11:13
  • Hi, yes I checked class Theme Customizer CSS appears after my css at source code inspect. I have default background color at customizer which changes whole page including header and footer. but if I am changing footer color that is not working. Commented Feb 22, 2021 at 11:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.