[wp-trac] [WordPress Trac] #30235: Improve ability to filter active state for widget area Customizer sections
WordPress Trac
noreply at wordpress.org
Mon Nov 3 00:01:31 UTC 2014
#30235: Improve ability to filter active state for widget area Customizer sections
--------------------------+-------------------------
Reporter: westonruter | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: 4.1
Component: Customize | Version: trunk
Severity: normal | Resolution:
Keywords: needs-patch | Focuses: javascript
--------------------------+-------------------------
Description changed by westonruter:
Old description:
> Currently in trunk, to mark a Customizer section representing a widget
> area (sidebar) you have to supply two separate filters instead of one:
>
> {{{#!php
> /**
> * Prevent the second widget area (sidebar) from being displayed in the
> Customizer.
> *
> * @param bool $active
> * @param WP_Customize_Section $section
> * @return bool
> */
> function force_hide_second_widget_area_customize_section( $active,
> $section ) {
> if ( 'sidebar-widgets-sidebar-2' === $section->id ) {
> $active = false;
> }
> return $active;
> }
> add_filter( 'customize_section_active',
> 'force_hide_second_widget_area_customize_section', 10, 2 );
>
> /**
> * Prevent the second widget area (sidebar) from being displayed in the
> Customizer.
> *
> * @param bool $active
> * @param WP_Customize_Control $control
> * @return bool
> */
> function force_hide_second_widget_area_customize_control( $active,
> $control ) {
> if ( 'sidebars_widgets[sidebar-2]' === $control->id ) {
> $active = false;
> }
> return $active;
> }
> add_filter( 'customize_control_active',
> 'force_hide_second_widget_area_customize_control', 10, 2 );
> }}}
>
> Only the first one really should be needed, but the `SidebarControl`
> currently syncs its `active` state to the containing section:
>
> {{{#!js
> // Update the model with whether or not the sidebar is rendered
> self.active.bind( function ( active ) {
> registeredSidebar.set( 'is_rendered', active );
> api.section( self.section.get() ).active( active );
> } );
> }}}
>
> This was done in 4.0 because there was no `active` state for sections,
> since there were no models for sections at all. But now that there are
> models for sections (and panels) we should allow just filtering of
> `customize_section_active` to be able to inactivate a section.
New description:
Currently in trunk, to mark a Customizer section representing a widget
area (sidebar) you have to supply two separate filters instead of one:
{{{#!php
<?php
/**
* Prevent the second widget area (sidebar) from being displayed in the
Customizer.
*
* @param bool $active
* @param WP_Customize_Section $section
* @return bool
*/
function force_hide_second_widget_area_customize_section( $active,
$section ) {
if ( 'sidebar-widgets-sidebar-2' === $section->id ) {
$active = false;
}
return $active;
}
add_filter( 'customize_section_active',
'force_hide_second_widget_area_customize_section', 10, 2 );
/**
* Prevent the second widget area (sidebar) from being displayed in the
Customizer.
*
* @param bool $active
* @param WP_Customize_Control $control
* @return bool
*/
function force_hide_second_widget_area_customize_control( $active,
$control ) {
if ( 'sidebars_widgets[sidebar-2]' === $control->id ) {
$active = false;
}
return $active;
}
add_filter( 'customize_control_active',
'force_hide_second_widget_area_customize_control', 10, 2 );
}}}
Only the first one really should be needed, but the `SidebarControl`
currently syncs its `active` state to the containing section:
{{{#!js
// Update the model with whether or not the sidebar is rendered
self.active.bind( function ( active ) {
registeredSidebar.set( 'is_rendered', active );
api.section( self.section.get() ).active( active );
} );
}}}
This was done in 4.0 because there was no `active` state for sections,
since there were no models for sections at all. But now that there are
models for sections (and panels) we should allow just filtering of
`customize_section_active` to be able to inactivate a section.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/30235#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list