Save button in theme customization page stays disabled

Ok here's the scenario: I have added a custom section to an existing theme so that it shows up in the theme customization page (customize.php). The problem I am having is that I don't know how to notify wordpress when changes are made in my custom control. I guess I am missing something in my code because it should do it in automatic?

Here is some sample code:

$wp_customize-add_section('my_section', 
    array(
        'title' = 'My title',
        'description' = 'My description',
        'priority' = 201
    )
);

$wp_customize-add_setting(
    'my_setting',
    array(
        'default' = '',
        'type' = 'option',
        'transport' = 'postMessage'
    )
);

$wp_customize-add_control(
    new My_Control(
        $wp_customize,
        'my_control',
        array(
            'label'    = 'My label',
            'settings' = 'my_setting',
            'section'  = 'my_section'
        )
    )
);

Note that My_Control is a class which enqueues additional js/css files and renders my sortable list. I am storing my model in an array rather than using multiple settings; I add my model to the page using the wp_localize_script function.

Topic theme-customizer settings-api Wordpress

Category Web


Wait, why use transport => postMessage? That's for handling the communication between the control and a JS script.

You should just use transport => refresh, this way WordPress will refresh itself on change on the input.


Real-time updating is achieved with JavaScript. Is your .js code working? The Codex has great examples and I think Otto has a defacto post about it somewhere on Google.

This has everything you need: https://codex.wordpress.org/Theme_Customization_API

About

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