WP_Customize_Selective_Refresh::add_partial( WP_Customize_Partial|string $id, array $args = array() ): WP_Customize_Partial

Adds a partial.


See also


Customize Partial object, or Partial ID.
Array of properties for the new Partials object.
See WP_Customize_Partial::__construct() for information on accepted arguments.



WP_Customize_Partial The instance of the partial that was added.


public function add_partial( $id, $args = array() ) {
	if ( $id instanceof WP_Customize_Partial ) {
		$partial = $id;
	} else {
		$class = 'WP_Customize_Partial';

		/** This filter is documented in wp-includes/customize/class-wp-customize-selective-refresh.php */
		$args = apply_filters( 'customize_dynamic_partial_args', $args, $id );

		/** This filter is documented in wp-includes/customize/class-wp-customize-selective-refresh.php */
		$class = apply_filters( 'customize_dynamic_partial_class', $class, $id, $args );

		$partial = new $class( $this, $id, $args );

	$this->partials[ $partial->id ] = $partial;
	return $partial;


apply_filters( ‘customize_dynamic_partial_args’, false|array $partial_args, string $partial_id )

Filters a dynamic partial’s constructor arguments.

apply_filters( ‘customize_dynamic_partial_class’, string $partial_class, string $partial_id, array $partial_args )

Filters the class used to construct partials.



User Contributed Notes

  1. Skip to note 2 content

    In case you wonder why the pencil icon is not showing in your theme (and maybe the “Shift-click to edit this element.” title does), it might be because you chose an “illegal” container selector to place it in. E.g:

    /* THIS WON'T WORK! */
    $wp_customize->selective_refresh->add_partial( 'second_logo', array(
    	'selector' => '.second-logo img' // img is an "illegal container selector"
    ) );

    If you look into customize-selective-refresh.js you will find that the “illegal” selectors are

    createEditShortcutForPlacement: function( placement ) {
    var //...
    illegalContainerSelector = 'area, audio, base, bdi, bdo, br, button, canvas, col, colgroup, command, datalist, embed, head, hr, html, iframe, img, input, keygen, label, link, map, math, menu, meta, noscript, object, optgroup, option, param, progress, rp, rt, ruby, script, select, source, style, svg, table, tbody, textarea, tfoot, thead, title, tr, track, video, wbr';

    In other words, you need to be sure that whatever element you point to as the container for the pencil icon is not one of those (not an image, not a hr, etc).

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