do_action( ‘customize_register’, WP_Customize_Manager $manager )

Fires once WordPress has loaded, allowing scripts and styles to be initialized.

Parameters

$managerWP_Customize_Manager

More Information

The ‘customize_register‘ action hook is used to customize and manipulate the Theme Customization admin screen introduced in WordPress Version 3.4. This hook is a component of the Theme Customization API.

This hook gives you access to the $wp_customize object, which is an instance of the WP_Customize_Manager class. It is this class object that controls the Theme Customizer screen.

Generally, there are only 4 methods of the $wp_customize object that you will need to interact with inside the customize_register hook.

WP_Customize_Manager->add_setting()
This adds a new setting to the database.
WP_Customize_Manager->add_section()
This adds a new section (i.e. category/group) to the Theme Customizer page.
WP_Customize_Manager->add_control()
This creates an HTML control that admins can use to change settings. This is also where you choose a section for the control to appear in.
WP_Customize_Manager->get_setting()
This can be used to fetch any existing setting, in the event you need to modify something (like one of WordPress’s default settings).

Example: Customizer with basic controls sample

function themename_customize_register($wp_customize){

$wp_customize->add_section('themename_color_scheme', array(
'title'    => __('Color Scheme', 'themename'),
'description' => '',
'priority' => 120,
));

//  =============================
//  = Text Input                =
//  =============================
$wp_customize->add_setting('themename_theme_options[text_test]', array(
'default'        => 'value_xyz',
'capability'     => 'edit_theme_options',
'type'           => 'option',

));

$wp_customize->add_control('themename_text_test', array(
'label'      => __('Text Test', 'themename'),
'section'    => 'themename_color_scheme',
'settings'   => 'themename_theme_options[text_test]',
));

//  =============================
//  = Radio Input               =
//  =============================
$wp_customize->add_setting('themename_theme_options[color_scheme]', array(
'default'        => 'value2',
'capability'     => 'edit_theme_options',
'type'           => 'option',
));

$wp_customize->add_control('themename_color_scheme', array(
'label'      => __('Color Scheme', 'themename'),
'section'    => 'themename_color_scheme',
'settings'   => 'themename_theme_options[color_scheme]',
'type'       => 'radio',
'choices'    => array(
'value1' => 'Choice 1',
'value2' => 'Choice 2',
'value3' => 'Choice 3',
),
));

//  =============================
//  = Checkbox                  =
//  =============================
$wp_customize->add_setting('themename_theme_options[checkbox_test]', array(
'capability' => 'edit_theme_options',
'type'       => 'option',
));

$wp_customize->add_control('display_header_text', array(
'settings' => 'themename_theme_options[checkbox_test]',
'label'    => __('Display Header Text'),
'section'  => 'themename_color_scheme',
'type'     => 'checkbox',
));

//  =============================
//  = Select Box                =
//  =============================
$wp_customize->add_setting('themename_theme_options[header_select]', array(
'default'        => 'value2',
'capability'     => 'edit_theme_options',
'type'           => 'option',

));
$wp_customize->add_control( 'example_select_box', array(
'settings' => 'themename_theme_options[header_select]',
'label'   => 'Select Something:',
'section' => 'themename_color_scheme',
'type'    => 'select',
'choices'    => array(
'value1' => 'Choice 1',
'value2' => 'Choice 2',
'value3' => 'Choice 3',
),
));

//  =============================
//  = Image Upload              =
//  =============================
$wp_customize->add_setting('themename_theme_options[image_upload_test]', array(
'default'           => 'image.jpg',
'capability'        => 'edit_theme_options',
'type'           => 'option',

));

$wp_customize->add_control( new WP_Customize_Image_Control($wp_customize, 'image_upload_test', array(
'label'    => __('Image Upload Test', 'themename'),
'section'  => 'themename_color_scheme',
'settings' => 'themename_theme_options[image_upload_test]',
)));

//  =============================
//  = File Upload               =
//  =============================
$wp_customize->add_setting('themename_theme_options[upload_test]', array(
'default'           => 'arse',
'capability'        => 'edit_theme_options',
'type'           => 'option',

));

$wp_customize->add_control( new WP_Customize_Upload_Control($wp_customize, 'upload_test', array(
'label'    => __('Upload Test', 'themename'),
'section'  => 'themename_color_scheme',
'settings' => 'themename_theme_options[upload_test]',
)));

//  =============================
//  = Color Picker              =
//  =============================
$wp_customize->add_setting('themename_theme_options[link_color]', array(
'default'           => '#000',
'sanitize_callback' => 'sanitize_hex_color',
'capability'        => 'edit_theme_options',
'type'           => 'option',

));

$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'link_color', array(
'label'    => __('Link Color', 'themename'),
'section'  => 'themename_color_scheme',
'settings' => 'themename_theme_options[link_color]',
)));

//  =============================
//  = Page Dropdown             =
//  =============================
$wp_customize->add_setting('themename_theme_options[page_test]', array(
'capability'     => 'edit_theme_options',
'type'           => 'option',

));

$wp_customize->add_control('themename_page_test', array(
'label'      => __('Page Test', 'themename'),
'section'    => 'themename_color_scheme',
'type'    => 'dropdown-pages',
'settings'   => 'themename_theme_options[page_test]',
));

// =====================
//  = Category Dropdown =
//  =====================
$categories = get_categories();
$cats = array();
$i = 0;
foreach($categories as $category){
if($i==0){
$default = $category->slug;
$i++;
}
$cats[$category->slug] = $category->name;
}

$wp_customize->add_setting('_s_f_slide_cat', array(
'default'        => $default
));
$wp_customize->add_control( 'cat_select_box', array(
'settings' => '_s_f_slide_cat',
'label'   => 'Select Category:',
'section'  => '_s_f_home_slider',
'type'    => 'select',
'choices' => $cats,
));
}

add_action('customize_register', 'themename_customize_register');

Source

do_action( 'customize_register', $this );

Changelog

VersionDescription
3.4.0Introduced.

User Contributed Notes

  1. Skip to note 5 content

    The “Customize” link will usually disappear if you’re using a modern Block Theme or Full Site Editing theme. You can add it back by returning true to `customize_register`. This can be useful if you’re trying to edit the WooCommerce Store Notice or if you’re using another plugin that places settings in the Customizer.

    add_action( 'customize_register', '__return_true' );
  2. Skip to note 6 content

    Don’t conditionally hook customize_register behind an is_admin() check. e.g.

    // Incorrect:
    if ( is_admin() ) {
        add_action( 'customize_register', 'add_customizer_sections' );
    }

    Doing so will cause your custom sections to disappear from the Customizer.

    // Correct:
    add_action( 'customize_register', 'add_customizer_sections' );

You must log in before being able to contribute a note or feedback.