Make WordPress Core


Ignore:
Timestamp:
02/24/2016 06:27:45 PM (11 years ago)
Author:
westonruter
Message:

Customize: Allow controls to be registered without any associated settings.

  • Improves parity between partials and controls. A partial or control can be settingless if instantiated with settings param as empty array (otherwise, if null, then the partial/control ID is used).
  • Eliminate need to create dummy settings that serve no purpose except to place a control in the UI.
  • Removes dummy settings for create_new_menu and new_menu_name.
  • Introduces WP_Customize_Control::$capability and WP_Customize_Partial::$capability, and if set checks them in the respective check_capabilities() methods.
  • Prevents PHP fatal error from happening when non-existing settings are provided to control: "Call to a member function check_capabilities() on a non-object".
  • Fixes issue where nav menu items and widgets were no longer working with selective refresh because cap check was failing.

See #27355.
Fixes #35926.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-customize-widgets.php

    r36623 r36689  
    14861486        public function customize_dynamic_partial_args( $partial_args, $partial_id ) {
    14871487
    1488                 if ( preg_match( '/^widget\[.+\]$/', $partial_id ) ) {
     1488                if ( preg_match( '/^widget\[(?P<widget_id>.+)\]$/', $partial_id, $matches ) ) {
    14891489                        if ( false === $partial_args ) {
    14901490                                $partial_args = array();
    … …  
    14931493                                $partial_args,
    14941494                                array(
    1495                                         'type' => 'widget',
    1496                                         'render_callback' => array( $this, 'render_widget_partial' ),
     1495                                        'type'                => 'widget',
     1496                                        'render_callback'     => array( $this, 'render_widget_partial' ),
    14971497                                        'container_inclusive' => true,
     1498                                        'settings'            => array( $this->get_setting_id( $matches['widget_id'] ) ),
     1499                                        'capability'          => 'edit_theme_options',
    14981500                                )
    14991501                        );
Note: See TracChangeset for help on using the changeset viewer.