Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-inclu...
File: class-wp-customize-manager.php
foreach ( $this->_changeset_data as $raw_setting_id => $setting_params ) {
[3500] Fix | Delete
$actual_setting_id = null;
[3501] Fix | Delete
$is_theme_mod_setting = (
[3502] Fix | Delete
isset( $setting_params['value'] )
[3503] Fix | Delete
&&
[3504] Fix | Delete
isset( $setting_params['type'] )
[3505] Fix | Delete
&&
[3506] Fix | Delete
'theme_mod' === $setting_params['type']
[3507] Fix | Delete
&&
[3508] Fix | Delete
preg_match( $namespace_pattern, $raw_setting_id, $matches )
[3509] Fix | Delete
);
[3510] Fix | Delete
if ( $is_theme_mod_setting ) {
[3511] Fix | Delete
if ( ! isset( $theme_mod_settings[ $matches['stylesheet'] ] ) ) {
[3512] Fix | Delete
$theme_mod_settings[ $matches['stylesheet'] ] = array();
[3513] Fix | Delete
}
[3514] Fix | Delete
$theme_mod_settings[ $matches['stylesheet'] ][ $matches['setting_id'] ] = $setting_params;
[3515] Fix | Delete
[3516] Fix | Delete
if ( $this->get_stylesheet() === $matches['stylesheet'] ) {
[3517] Fix | Delete
$actual_setting_id = $matches['setting_id'];
[3518] Fix | Delete
}
[3519] Fix | Delete
} else {
[3520] Fix | Delete
$actual_setting_id = $raw_setting_id;
[3521] Fix | Delete
}
[3522] Fix | Delete
[3523] Fix | Delete
// Keep track of the user IDs for settings actually for this theme.
[3524] Fix | Delete
if ( $actual_setting_id && isset( $setting_params['user_id'] ) ) {
[3525] Fix | Delete
$setting_user_ids[ $actual_setting_id ] = $setting_params['user_id'];
[3526] Fix | Delete
}
[3527] Fix | Delete
}
[3528] Fix | Delete
[3529] Fix | Delete
$changeset_setting_values = $this->unsanitized_post_values(
[3530] Fix | Delete
array(
[3531] Fix | Delete
'exclude_post_data' => true,
[3532] Fix | Delete
'exclude_changeset' => false,
[3533] Fix | Delete
)
[3534] Fix | Delete
);
[3535] Fix | Delete
$changeset_setting_ids = array_keys( $changeset_setting_values );
[3536] Fix | Delete
$this->add_dynamic_settings( $changeset_setting_ids );
[3537] Fix | Delete
[3538] Fix | Delete
/**
[3539] Fix | Delete
* Fires once the theme has switched in the Customizer, but before settings
[3540] Fix | Delete
* have been saved.
[3541] Fix | Delete
*
[3542] Fix | Delete
* @since 3.4.0
[3543] Fix | Delete
*
[3544] Fix | Delete
* @param WP_Customize_Manager $manager WP_Customize_Manager instance.
[3545] Fix | Delete
*/
[3546] Fix | Delete
do_action( 'customize_save', $this );
[3547] Fix | Delete
[3548] Fix | Delete
/*
[3549] Fix | Delete
* Ensure that all settings will allow themselves to be saved. Note that
[3550] Fix | Delete
* this is safe because the setting would have checked the capability
[3551] Fix | Delete
* when the setting value was written into the changeset. So this is why
[3552] Fix | Delete
* an additional capability check is not required here.
[3553] Fix | Delete
*/
[3554] Fix | Delete
$original_setting_capabilities = array();
[3555] Fix | Delete
foreach ( $changeset_setting_ids as $setting_id ) {
[3556] Fix | Delete
$setting = $this->get_setting( $setting_id );
[3557] Fix | Delete
if ( $setting && ! isset( $setting_user_ids[ $setting_id ] ) ) {
[3558] Fix | Delete
$original_setting_capabilities[ $setting->id ] = $setting->capability;
[3559] Fix | Delete
$setting->capability = 'exist';
[3560] Fix | Delete
}
[3561] Fix | Delete
}
[3562] Fix | Delete
[3563] Fix | Delete
$original_user_id = get_current_user_id();
[3564] Fix | Delete
foreach ( $changeset_setting_ids as $setting_id ) {
[3565] Fix | Delete
$setting = $this->get_setting( $setting_id );
[3566] Fix | Delete
if ( $setting ) {
[3567] Fix | Delete
/*
[3568] Fix | Delete
* Set the current user to match the user who saved the value into
[3569] Fix | Delete
* the changeset so that any filters that apply during the save
[3570] Fix | Delete
* process will respect the original user's capabilities. This
[3571] Fix | Delete
* will ensure, for example, that KSES won't strip unsafe HTML
[3572] Fix | Delete
* when a scheduled changeset publishes via WP Cron.
[3573] Fix | Delete
*/
[3574] Fix | Delete
if ( isset( $setting_user_ids[ $setting_id ] ) ) {
[3575] Fix | Delete
wp_set_current_user( $setting_user_ids[ $setting_id ] );
[3576] Fix | Delete
} else {
[3577] Fix | Delete
wp_set_current_user( $original_user_id );
[3578] Fix | Delete
}
[3579] Fix | Delete
[3580] Fix | Delete
$setting->save();
[3581] Fix | Delete
}
[3582] Fix | Delete
}
[3583] Fix | Delete
wp_set_current_user( $original_user_id );
[3584] Fix | Delete
[3585] Fix | Delete
// Update the stashed theme mod settings, removing the active theme's stashed settings, if activated.
[3586] Fix | Delete
if ( did_action( 'switch_theme' ) ) {
[3587] Fix | Delete
$other_theme_mod_settings = $theme_mod_settings;
[3588] Fix | Delete
unset( $other_theme_mod_settings[ $this->get_stylesheet() ] );
[3589] Fix | Delete
$this->update_stashed_theme_mod_settings( $other_theme_mod_settings );
[3590] Fix | Delete
}
[3591] Fix | Delete
[3592] Fix | Delete
/**
[3593] Fix | Delete
* Fires after Customize settings have been saved.
[3594] Fix | Delete
*
[3595] Fix | Delete
* @since 3.6.0
[3596] Fix | Delete
*
[3597] Fix | Delete
* @param WP_Customize_Manager $manager WP_Customize_Manager instance.
[3598] Fix | Delete
*/
[3599] Fix | Delete
do_action( 'customize_save_after', $this );
[3600] Fix | Delete
[3601] Fix | Delete
// Restore original capabilities.
[3602] Fix | Delete
foreach ( $original_setting_capabilities as $setting_id => $capability ) {
[3603] Fix | Delete
$setting = $this->get_setting( $setting_id );
[3604] Fix | Delete
if ( $setting ) {
[3605] Fix | Delete
$setting->capability = $capability;
[3606] Fix | Delete
}
[3607] Fix | Delete
}
[3608] Fix | Delete
[3609] Fix | Delete
// Restore original changeset data.
[3610] Fix | Delete
$this->_changeset_data = $previous_changeset_data;
[3611] Fix | Delete
$this->_changeset_post_id = $previous_changeset_post_id;
[3612] Fix | Delete
$this->_changeset_uuid = $previous_changeset_uuid;
[3613] Fix | Delete
[3614] Fix | Delete
/*
[3615] Fix | Delete
* Convert all autosave revisions into their own auto-drafts so that users can be prompted to
[3616] Fix | Delete
* restore them when a changeset is published, but they had been locked out from including
[3617] Fix | Delete
* their changes in the changeset.
[3618] Fix | Delete
*/
[3619] Fix | Delete
$revisions = wp_get_post_revisions( $changeset_post_id, array( 'check_enabled' => false ) );
[3620] Fix | Delete
foreach ( $revisions as $revision ) {
[3621] Fix | Delete
if ( str_contains( $revision->post_name, "{$changeset_post_id}-autosave" ) ) {
[3622] Fix | Delete
$wpdb->update(
[3623] Fix | Delete
$wpdb->posts,
[3624] Fix | Delete
array(
[3625] Fix | Delete
'post_status' => 'auto-draft',
[3626] Fix | Delete
'post_type' => 'customize_changeset',
[3627] Fix | Delete
'post_name' => wp_generate_uuid4(),
[3628] Fix | Delete
'post_parent' => 0,
[3629] Fix | Delete
),
[3630] Fix | Delete
array(
[3631] Fix | Delete
'ID' => $revision->ID,
[3632] Fix | Delete
)
[3633] Fix | Delete
);
[3634] Fix | Delete
clean_post_cache( $revision->ID );
[3635] Fix | Delete
}
[3636] Fix | Delete
}
[3637] Fix | Delete
[3638] Fix | Delete
return true;
[3639] Fix | Delete
}
[3640] Fix | Delete
[3641] Fix | Delete
/**
[3642] Fix | Delete
* Updates stashed theme mod settings.
[3643] Fix | Delete
*
[3644] Fix | Delete
* @since 4.7.0
[3645] Fix | Delete
*
[3646] Fix | Delete
* @param array $inactive_theme_mod_settings Mapping of stylesheet to arrays of theme mod settings.
[3647] Fix | Delete
* @return array|false Returns array of updated stashed theme mods or false if the update failed or there were no changes.
[3648] Fix | Delete
*/
[3649] Fix | Delete
protected function update_stashed_theme_mod_settings( $inactive_theme_mod_settings ) {
[3650] Fix | Delete
$stashed_theme_mod_settings = get_option( 'customize_stashed_theme_mods' );
[3651] Fix | Delete
if ( empty( $stashed_theme_mod_settings ) ) {
[3652] Fix | Delete
$stashed_theme_mod_settings = array();
[3653] Fix | Delete
}
[3654] Fix | Delete
[3655] Fix | Delete
// Delete any stashed theme mods for the active theme since they would have been loaded and saved upon activation.
[3656] Fix | Delete
unset( $stashed_theme_mod_settings[ $this->get_stylesheet() ] );
[3657] Fix | Delete
[3658] Fix | Delete
// Merge inactive theme mods with the stashed theme mod settings.
[3659] Fix | Delete
foreach ( $inactive_theme_mod_settings as $stylesheet => $theme_mod_settings ) {
[3660] Fix | Delete
if ( ! isset( $stashed_theme_mod_settings[ $stylesheet ] ) ) {
[3661] Fix | Delete
$stashed_theme_mod_settings[ $stylesheet ] = array();
[3662] Fix | Delete
}
[3663] Fix | Delete
[3664] Fix | Delete
$stashed_theme_mod_settings[ $stylesheet ] = array_merge(
[3665] Fix | Delete
$stashed_theme_mod_settings[ $stylesheet ],
[3666] Fix | Delete
$theme_mod_settings
[3667] Fix | Delete
);
[3668] Fix | Delete
}
[3669] Fix | Delete
[3670] Fix | Delete
$autoload = false;
[3671] Fix | Delete
$result = update_option( 'customize_stashed_theme_mods', $stashed_theme_mod_settings, $autoload );
[3672] Fix | Delete
if ( ! $result ) {
[3673] Fix | Delete
return false;
[3674] Fix | Delete
}
[3675] Fix | Delete
return $stashed_theme_mod_settings;
[3676] Fix | Delete
}
[3677] Fix | Delete
[3678] Fix | Delete
/**
[3679] Fix | Delete
* Refreshes nonces for the current preview.
[3680] Fix | Delete
*
[3681] Fix | Delete
* @since 4.2.0
[3682] Fix | Delete
*/
[3683] Fix | Delete
public function refresh_nonces() {
[3684] Fix | Delete
if ( ! $this->is_preview() ) {
[3685] Fix | Delete
wp_send_json_error( 'not_preview' );
[3686] Fix | Delete
}
[3687] Fix | Delete
[3688] Fix | Delete
wp_send_json_success( $this->get_nonces() );
[3689] Fix | Delete
}
[3690] Fix | Delete
[3691] Fix | Delete
/**
[3692] Fix | Delete
* Deletes a given auto-draft changeset or the autosave revision for a given changeset or delete changeset lock.
[3693] Fix | Delete
*
[3694] Fix | Delete
* @since 4.9.0
[3695] Fix | Delete
*/
[3696] Fix | Delete
public function handle_dismiss_autosave_or_lock_request() {
[3697] Fix | Delete
// Calls to dismiss_user_auto_draft_changesets() and wp_get_post_autosave() require non-zero get_current_user_id().
[3698] Fix | Delete
if ( ! is_user_logged_in() ) {
[3699] Fix | Delete
wp_send_json_error( 'unauthenticated', 401 );
[3700] Fix | Delete
}
[3701] Fix | Delete
[3702] Fix | Delete
if ( ! $this->is_preview() ) {
[3703] Fix | Delete
wp_send_json_error( 'not_preview', 400 );
[3704] Fix | Delete
}
[3705] Fix | Delete
[3706] Fix | Delete
if ( ! check_ajax_referer( 'customize_dismiss_autosave_or_lock', 'nonce', false ) ) {
[3707] Fix | Delete
wp_send_json_error( 'invalid_nonce', 403 );
[3708] Fix | Delete
}
[3709] Fix | Delete
[3710] Fix | Delete
$changeset_post_id = $this->changeset_post_id();
[3711] Fix | Delete
$dismiss_lock = ! empty( $_POST['dismiss_lock'] );
[3712] Fix | Delete
$dismiss_autosave = ! empty( $_POST['dismiss_autosave'] );
[3713] Fix | Delete
[3714] Fix | Delete
if ( $dismiss_lock ) {
[3715] Fix | Delete
if ( empty( $changeset_post_id ) && ! $dismiss_autosave ) {
[3716] Fix | Delete
wp_send_json_error( 'no_changeset_to_dismiss_lock', 404 );
[3717] Fix | Delete
}
[3718] Fix | Delete
if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->edit_post, $changeset_post_id ) && ! $dismiss_autosave ) {
[3719] Fix | Delete
wp_send_json_error( 'cannot_remove_changeset_lock', 403 );
[3720] Fix | Delete
}
[3721] Fix | Delete
[3722] Fix | Delete
delete_post_meta( $changeset_post_id, '_edit_lock' );
[3723] Fix | Delete
[3724] Fix | Delete
if ( ! $dismiss_autosave ) {
[3725] Fix | Delete
wp_send_json_success( 'changeset_lock_dismissed' );
[3726] Fix | Delete
}
[3727] Fix | Delete
}
[3728] Fix | Delete
[3729] Fix | Delete
if ( $dismiss_autosave ) {
[3730] Fix | Delete
if ( empty( $changeset_post_id ) || 'auto-draft' === get_post_status( $changeset_post_id ) ) {
[3731] Fix | Delete
$dismissed = $this->dismiss_user_auto_draft_changesets();
[3732] Fix | Delete
if ( $dismissed > 0 ) {
[3733] Fix | Delete
wp_send_json_success( 'auto_draft_dismissed' );
[3734] Fix | Delete
} else {
[3735] Fix | Delete
wp_send_json_error( 'no_auto_draft_to_delete', 404 );
[3736] Fix | Delete
}
[3737] Fix | Delete
} else {
[3738] Fix | Delete
$revision = wp_get_post_autosave( $changeset_post_id, get_current_user_id() );
[3739] Fix | Delete
[3740] Fix | Delete
if ( $revision ) {
[3741] Fix | Delete
if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->delete_post, $changeset_post_id ) ) {
[3742] Fix | Delete
wp_send_json_error( 'cannot_delete_autosave_revision', 403 );
[3743] Fix | Delete
}
[3744] Fix | Delete
[3745] Fix | Delete
if ( ! wp_delete_post( $revision->ID, true ) ) {
[3746] Fix | Delete
wp_send_json_error( 'autosave_revision_deletion_failure', 500 );
[3747] Fix | Delete
} else {
[3748] Fix | Delete
wp_send_json_success( 'autosave_revision_deleted' );
[3749] Fix | Delete
}
[3750] Fix | Delete
} else {
[3751] Fix | Delete
wp_send_json_error( 'no_autosave_revision_to_delete', 404 );
[3752] Fix | Delete
}
[3753] Fix | Delete
}
[3754] Fix | Delete
}
[3755] Fix | Delete
[3756] Fix | Delete
wp_send_json_error( 'unknown_error', 500 );
[3757] Fix | Delete
}
[3758] Fix | Delete
[3759] Fix | Delete
/**
[3760] Fix | Delete
* Adds a customize setting.
[3761] Fix | Delete
*
[3762] Fix | Delete
* @since 3.4.0
[3763] Fix | Delete
* @since 4.5.0 Return added WP_Customize_Setting instance.
[3764] Fix | Delete
*
[3765] Fix | Delete
* @see WP_Customize_Setting::__construct()
[3766] Fix | Delete
* @link https://developer.wordpress.org/themes/customize-api
[3767] Fix | Delete
*
[3768] Fix | Delete
* @param WP_Customize_Setting|string $id Customize Setting object, or ID.
[3769] Fix | Delete
* @param array $args Optional. Array of properties for the new Setting object.
[3770] Fix | Delete
* See WP_Customize_Setting::__construct() for information
[3771] Fix | Delete
* on accepted arguments. Default empty array.
[3772] Fix | Delete
* @return WP_Customize_Setting The instance of the setting that was added.
[3773] Fix | Delete
*/
[3774] Fix | Delete
public function add_setting( $id, $args = array() ) {
[3775] Fix | Delete
if ( $id instanceof WP_Customize_Setting ) {
[3776] Fix | Delete
$setting = $id;
[3777] Fix | Delete
} else {
[3778] Fix | Delete
$class = 'WP_Customize_Setting';
[3779] Fix | Delete
[3780] Fix | Delete
/** This filter is documented in wp-includes/class-wp-customize-manager.php */
[3781] Fix | Delete
$args = apply_filters( 'customize_dynamic_setting_args', $args, $id );
[3782] Fix | Delete
[3783] Fix | Delete
/** This filter is documented in wp-includes/class-wp-customize-manager.php */
[3784] Fix | Delete
$class = apply_filters( 'customize_dynamic_setting_class', $class, $id, $args );
[3785] Fix | Delete
[3786] Fix | Delete
$setting = new $class( $this, $id, $args );
[3787] Fix | Delete
}
[3788] Fix | Delete
[3789] Fix | Delete
$this->settings[ $setting->id ] = $setting;
[3790] Fix | Delete
return $setting;
[3791] Fix | Delete
}
[3792] Fix | Delete
[3793] Fix | Delete
/**
[3794] Fix | Delete
* Registers any dynamically-created settings, such as those from $_POST['customized']
[3795] Fix | Delete
* that have no corresponding setting created.
[3796] Fix | Delete
*
[3797] Fix | Delete
* This is a mechanism to "wake up" settings that have been dynamically created
[3798] Fix | Delete
* on the front end and have been sent to WordPress in `$_POST['customized']`. When WP
[3799] Fix | Delete
* loads, the dynamically-created settings then will get created and previewed
[3800] Fix | Delete
* even though they are not directly created statically with code.
[3801] Fix | Delete
*
[3802] Fix | Delete
* @since 4.2.0
[3803] Fix | Delete
*
[3804] Fix | Delete
* @param array $setting_ids The setting IDs to add.
[3805] Fix | Delete
* @return array The WP_Customize_Setting objects added.
[3806] Fix | Delete
*/
[3807] Fix | Delete
public function add_dynamic_settings( $setting_ids ) {
[3808] Fix | Delete
$new_settings = array();
[3809] Fix | Delete
foreach ( $setting_ids as $setting_id ) {
[3810] Fix | Delete
// Skip settings already created.
[3811] Fix | Delete
if ( $this->get_setting( $setting_id ) ) {
[3812] Fix | Delete
continue;
[3813] Fix | Delete
}
[3814] Fix | Delete
[3815] Fix | Delete
$setting_args = false;
[3816] Fix | Delete
$setting_class = 'WP_Customize_Setting';
[3817] Fix | Delete
[3818] Fix | Delete
/**
[3819] Fix | Delete
* Filters a dynamic setting's constructor args.
[3820] Fix | Delete
*
[3821] Fix | Delete
* For a dynamic setting to be registered, this filter must be employed
[3822] Fix | Delete
* to override the default false value with an array of args to pass to
[3823] Fix | Delete
* the WP_Customize_Setting constructor.
[3824] Fix | Delete
*
[3825] Fix | Delete
* @since 4.2.0
[3826] Fix | Delete
*
[3827] Fix | Delete
* @param false|array $setting_args The arguments to the WP_Customize_Setting constructor.
[3828] Fix | Delete
* @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`.
[3829] Fix | Delete
*/
[3830] Fix | Delete
$setting_args = apply_filters( 'customize_dynamic_setting_args', $setting_args, $setting_id );
[3831] Fix | Delete
if ( false === $setting_args ) {
[3832] Fix | Delete
continue;
[3833] Fix | Delete
}
[3834] Fix | Delete
[3835] Fix | Delete
/**
[3836] Fix | Delete
* Allow non-statically created settings to be constructed with custom WP_Customize_Setting subclass.
[3837] Fix | Delete
*
[3838] Fix | Delete
* @since 4.2.0
[3839] Fix | Delete
*
[3840] Fix | Delete
* @param string $setting_class WP_Customize_Setting or a subclass.
[3841] Fix | Delete
* @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`.
[3842] Fix | Delete
* @param array $setting_args WP_Customize_Setting or a subclass.
[3843] Fix | Delete
*/
[3844] Fix | Delete
$setting_class = apply_filters( 'customize_dynamic_setting_class', $setting_class, $setting_id, $setting_args );
[3845] Fix | Delete
[3846] Fix | Delete
$setting = new $setting_class( $this, $setting_id, $setting_args );
[3847] Fix | Delete
[3848] Fix | Delete
$this->add_setting( $setting );
[3849] Fix | Delete
$new_settings[] = $setting;
[3850] Fix | Delete
}
[3851] Fix | Delete
return $new_settings;
[3852] Fix | Delete
}
[3853] Fix | Delete
[3854] Fix | Delete
/**
[3855] Fix | Delete
* Retrieves a customize setting.
[3856] Fix | Delete
*
[3857] Fix | Delete
* @since 3.4.0
[3858] Fix | Delete
*
[3859] Fix | Delete
* @param string $id Customize Setting ID.
[3860] Fix | Delete
* @return WP_Customize_Setting|void The setting, if set.
[3861] Fix | Delete
*/
[3862] Fix | Delete
public function get_setting( $id ) {
[3863] Fix | Delete
if ( isset( $this->settings[ $id ] ) ) {
[3864] Fix | Delete
return $this->settings[ $id ];
[3865] Fix | Delete
}
[3866] Fix | Delete
}
[3867] Fix | Delete
[3868] Fix | Delete
/**
[3869] Fix | Delete
* Removes a customize setting.
[3870] Fix | Delete
*
[3871] Fix | Delete
* Note that removing the setting doesn't destroy the WP_Customize_Setting instance or remove its filters.
[3872] Fix | Delete
*
[3873] Fix | Delete
* @since 3.4.0
[3874] Fix | Delete
*
[3875] Fix | Delete
* @param string $id Customize Setting ID.
[3876] Fix | Delete
*/
[3877] Fix | Delete
public function remove_setting( $id ) {
[3878] Fix | Delete
unset( $this->settings[ $id ] );
[3879] Fix | Delete
}
[3880] Fix | Delete
[3881] Fix | Delete
/**
[3882] Fix | Delete
* Adds a customize panel.
[3883] Fix | Delete
*
[3884] Fix | Delete
* @since 4.0.0
[3885] Fix | Delete
* @since 4.5.0 Return added WP_Customize_Panel instance.
[3886] Fix | Delete
*
[3887] Fix | Delete
* @see WP_Customize_Panel::__construct()
[3888] Fix | Delete
*
[3889] Fix | Delete
* @param WP_Customize_Panel|string $id Customize Panel object, or ID.
[3890] Fix | Delete
* @param array $args Optional. Array of properties for the new Panel object.
[3891] Fix | Delete
* See WP_Customize_Panel::__construct() for information
[3892] Fix | Delete
* on accepted arguments. Default empty array.
[3893] Fix | Delete
* @return WP_Customize_Panel The instance of the panel that was added.
[3894] Fix | Delete
*/
[3895] Fix | Delete
public function add_panel( $id, $args = array() ) {
[3896] Fix | Delete
if ( $id instanceof WP_Customize_Panel ) {
[3897] Fix | Delete
$panel = $id;
[3898] Fix | Delete
} else {
[3899] Fix | Delete
$panel = new WP_Customize_Panel( $this, $id, $args );
[3900] Fix | Delete
}
[3901] Fix | Delete
[3902] Fix | Delete
$this->panels[ $panel->id ] = $panel;
[3903] Fix | Delete
return $panel;
[3904] Fix | Delete
}
[3905] Fix | Delete
[3906] Fix | Delete
/**
[3907] Fix | Delete
* Retrieves a customize panel.
[3908] Fix | Delete
*
[3909] Fix | Delete
* @since 4.0.0
[3910] Fix | Delete
*
[3911] Fix | Delete
* @param string $id Panel ID to get.
[3912] Fix | Delete
* @return WP_Customize_Panel|void Requested panel instance, if set.
[3913] Fix | Delete
*/
[3914] Fix | Delete
public function get_panel( $id ) {
[3915] Fix | Delete
if ( isset( $this->panels[ $id ] ) ) {
[3916] Fix | Delete
return $this->panels[ $id ];
[3917] Fix | Delete
}
[3918] Fix | Delete
}
[3919] Fix | Delete
[3920] Fix | Delete
/**
[3921] Fix | Delete
* Removes a customize panel.
[3922] Fix | Delete
*
[3923] Fix | Delete
* Note that removing the panel doesn't destroy the WP_Customize_Panel instance or remove its filters.
[3924] Fix | Delete
*
[3925] Fix | Delete
* @since 4.0.0
[3926] Fix | Delete
*
[3927] Fix | Delete
* @param string $id Panel ID to remove.
[3928] Fix | Delete
*/
[3929] Fix | Delete
public function remove_panel( $id ) {
[3930] Fix | Delete
// Removing core components this way is _doing_it_wrong().
[3931] Fix | Delete
if ( in_array( $id, $this->components, true ) ) {
[3932] Fix | Delete
_doing_it_wrong(
[3933] Fix | Delete
__METHOD__,
[3934] Fix | Delete
sprintf(
[3935] Fix | Delete
/* translators: 1: Panel ID, 2: Link to 'customize_loaded_components' filter reference. */
[3936] Fix | Delete
__( 'Removing %1$s manually will cause PHP warnings. Use the %2$s filter instead.' ),
[3937] Fix | Delete
$id,
[3938] Fix | Delete
sprintf(
[3939] Fix | Delete
'<a href="%1$s">%2$s</a>',
[3940] Fix | Delete
esc_url( 'https://developer.wordpress.org/reference/hooks/customize_loaded_components/' ),
[3941] Fix | Delete
'<code>customize_loaded_components</code>'
[3942] Fix | Delete
)
[3943] Fix | Delete
),
[3944] Fix | Delete
'4.5.0'
[3945] Fix | Delete
);
[3946] Fix | Delete
}
[3947] Fix | Delete
unset( $this->panels[ $id ] );
[3948] Fix | Delete
}
[3949] Fix | Delete
[3950] Fix | Delete
/**
[3951] Fix | Delete
* Registers a customize panel type.
[3952] Fix | Delete
*
[3953] Fix | Delete
* Registered types are eligible to be rendered via JS and created dynamically.
[3954] Fix | Delete
*
[3955] Fix | Delete
* @since 4.3.0
[3956] Fix | Delete
*
[3957] Fix | Delete
* @see WP_Customize_Panel
[3958] Fix | Delete
*
[3959] Fix | Delete
* @param string $panel Name of a custom panel which is a subclass of WP_Customize_Panel.
[3960] Fix | Delete
*/
[3961] Fix | Delete
public function register_panel_type( $panel ) {
[3962] Fix | Delete
$this->registered_panel_types[] = $panel;
[3963] Fix | Delete
}
[3964] Fix | Delete
[3965] Fix | Delete
/**
[3966] Fix | Delete
* Renders JS templates for all registered panel types.
[3967] Fix | Delete
*
[3968] Fix | Delete
* @since 4.3.0
[3969] Fix | Delete
*/
[3970] Fix | Delete
public function render_panel_templates() {
[3971] Fix | Delete
foreach ( $this->registered_panel_types as $panel_type ) {
[3972] Fix | Delete
$panel = new $panel_type( $this, 'temp', array() );
[3973] Fix | Delete
$panel->print_template();
[3974] Fix | Delete
}
[3975] Fix | Delete
}
[3976] Fix | Delete
[3977] Fix | Delete
/**
[3978] Fix | Delete
* Adds a customize section.
[3979] Fix | Delete
*
[3980] Fix | Delete
* @since 3.4.0
[3981] Fix | Delete
* @since 4.5.0 Return added WP_Customize_Section instance.
[3982] Fix | Delete
*
[3983] Fix | Delete
* @see WP_Customize_Section::__construct()
[3984] Fix | Delete
*
[3985] Fix | Delete
* @param WP_Customize_Section|string $id Customize Section object, or ID.
[3986] Fix | Delete
* @param array $args Optional. Array of properties for the new Section object.
[3987] Fix | Delete
* See WP_Customize_Section::__construct() for information
[3988] Fix | Delete
* on accepted arguments. Default empty array.
[3989] Fix | Delete
* @return WP_Customize_Section The instance of the section that was added.
[3990] Fix | Delete
*/
[3991] Fix | Delete
public function add_section( $id, $args = array() ) {
[3992] Fix | Delete
if ( $id instanceof WP_Customize_Section ) {
[3993] Fix | Delete
$section = $id;
[3994] Fix | Delete
} else {
[3995] Fix | Delete
$section = new WP_Customize_Section( $this, $id, $args );
[3996] Fix | Delete
}
[3997] Fix | Delete
[3998] Fix | Delete
$this->sections[ $section->id ] = $section;
[3999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function