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
/home/sportsfe.../httpdocs/wp-inclu.../customiz...
File: class-wp-customize-nav-menu-setting.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Customize API: WP_Customize_Nav_Menu_Setting class
[2] Fix | Delete
*
[3] Fix | Delete
* @package WordPress
[4] Fix | Delete
* @subpackage Customize
[5] Fix | Delete
* @since 4.4.0
[6] Fix | Delete
*/
[7] Fix | Delete
[8] Fix | Delete
/**
[9] Fix | Delete
* Customize Setting to represent a nav_menu.
[10] Fix | Delete
*
[11] Fix | Delete
* Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
[12] Fix | Delete
* the IDs for the nav_menu_items associated with the nav menu.
[13] Fix | Delete
*
[14] Fix | Delete
* @since 4.3.0
[15] Fix | Delete
*
[16] Fix | Delete
* @see wp_get_nav_menu_object()
[17] Fix | Delete
* @see WP_Customize_Setting
[18] Fix | Delete
*/
[19] Fix | Delete
class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting {
[20] Fix | Delete
[21] Fix | Delete
const ID_PATTERN = '/^nav_menu\[(?P<id>-?\d+)\]$/';
[22] Fix | Delete
[23] Fix | Delete
const TAXONOMY = 'nav_menu';
[24] Fix | Delete
[25] Fix | Delete
const TYPE = 'nav_menu';
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* Setting type.
[29] Fix | Delete
*
[30] Fix | Delete
* @since 4.3.0
[31] Fix | Delete
* @var string
[32] Fix | Delete
*/
[33] Fix | Delete
public $type = self::TYPE;
[34] Fix | Delete
[35] Fix | Delete
/**
[36] Fix | Delete
* Default setting value.
[37] Fix | Delete
*
[38] Fix | Delete
* @since 4.3.0
[39] Fix | Delete
* @var array
[40] Fix | Delete
*
[41] Fix | Delete
* @see wp_get_nav_menu_object()
[42] Fix | Delete
*/
[43] Fix | Delete
public $default = array(
[44] Fix | Delete
'name' => '',
[45] Fix | Delete
'description' => '',
[46] Fix | Delete
'parent' => 0,
[47] Fix | Delete
'auto_add' => false,
[48] Fix | Delete
);
[49] Fix | Delete
[50] Fix | Delete
/**
[51] Fix | Delete
* Default transport.
[52] Fix | Delete
*
[53] Fix | Delete
* @since 4.3.0
[54] Fix | Delete
* @var string
[55] Fix | Delete
*/
[56] Fix | Delete
public $transport = 'postMessage';
[57] Fix | Delete
[58] Fix | Delete
/**
[59] Fix | Delete
* The term ID represented by this setting instance.
[60] Fix | Delete
*
[61] Fix | Delete
* A negative value represents a placeholder ID for a new menu not yet saved.
[62] Fix | Delete
*
[63] Fix | Delete
* @since 4.3.0
[64] Fix | Delete
* @var int
[65] Fix | Delete
*/
[66] Fix | Delete
public $term_id;
[67] Fix | Delete
[68] Fix | Delete
/**
[69] Fix | Delete
* Previous (placeholder) term ID used before creating a new menu.
[70] Fix | Delete
*
[71] Fix | Delete
* This value will be exported to JS via the {@see 'customize_save_response'} filter
[72] Fix | Delete
* so that JavaScript can update the settings to refer to the newly-assigned
[73] Fix | Delete
* term ID. This value is always negative to indicate it does not refer to
[74] Fix | Delete
* a real term.
[75] Fix | Delete
*
[76] Fix | Delete
* @since 4.3.0
[77] Fix | Delete
* @var int
[78] Fix | Delete
*
[79] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::update()
[80] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
[81] Fix | Delete
*/
[82] Fix | Delete
public $previous_term_id;
[83] Fix | Delete
[84] Fix | Delete
/**
[85] Fix | Delete
* Whether or not update() was called.
[86] Fix | Delete
*
[87] Fix | Delete
* @since 4.3.0
[88] Fix | Delete
* @var bool
[89] Fix | Delete
*/
[90] Fix | Delete
protected $is_updated = false;
[91] Fix | Delete
[92] Fix | Delete
/**
[93] Fix | Delete
* Status for calling the update method, used in customize_save_response filter.
[94] Fix | Delete
*
[95] Fix | Delete
* See {@see 'customize_save_response'}.
[96] Fix | Delete
*
[97] Fix | Delete
* When status is inserted, the placeholder term ID is stored in `$previous_term_id`.
[98] Fix | Delete
* When status is error, the error is stored in `$update_error`.
[99] Fix | Delete
*
[100] Fix | Delete
* @since 4.3.0
[101] Fix | Delete
* @var string updated|inserted|deleted|error
[102] Fix | Delete
*
[103] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::update()
[104] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
[105] Fix | Delete
*/
[106] Fix | Delete
public $update_status;
[107] Fix | Delete
[108] Fix | Delete
/**
[109] Fix | Delete
* Any error object returned by wp_update_nav_menu_object() when setting is updated.
[110] Fix | Delete
*
[111] Fix | Delete
* @since 4.3.0
[112] Fix | Delete
* @var WP_Error
[113] Fix | Delete
*
[114] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::update()
[115] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
[116] Fix | Delete
*/
[117] Fix | Delete
public $update_error;
[118] Fix | Delete
[119] Fix | Delete
/**
[120] Fix | Delete
* Constructor.
[121] Fix | Delete
*
[122] Fix | Delete
* Any supplied $args override class property defaults.
[123] Fix | Delete
*
[124] Fix | Delete
* @since 4.3.0
[125] Fix | Delete
*
[126] Fix | Delete
* @throws Exception If $id is not valid for this setting type.
[127] Fix | Delete
*
[128] Fix | Delete
* @param WP_Customize_Manager $manager Customizer bootstrap instance.
[129] Fix | Delete
* @param string $id A specific ID of the setting.
[130] Fix | Delete
* Can be a theme mod or option name.
[131] Fix | Delete
* @param array $args Optional. Setting arguments.
[132] Fix | Delete
*/
[133] Fix | Delete
public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
[134] Fix | Delete
if ( empty( $manager->nav_menus ) ) {
[135] Fix | Delete
throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
[136] Fix | Delete
}
[137] Fix | Delete
[138] Fix | Delete
if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
[139] Fix | Delete
throw new Exception( "Illegal widget setting ID: $id" );
[140] Fix | Delete
}
[141] Fix | Delete
[142] Fix | Delete
$this->term_id = (int) $matches['id'];
[143] Fix | Delete
[144] Fix | Delete
parent::__construct( $manager, $id, $args );
[145] Fix | Delete
}
[146] Fix | Delete
[147] Fix | Delete
/**
[148] Fix | Delete
* Get the instance data for a given widget setting.
[149] Fix | Delete
*
[150] Fix | Delete
* @since 4.3.0
[151] Fix | Delete
*
[152] Fix | Delete
* @see wp_get_nav_menu_object()
[153] Fix | Delete
*
[154] Fix | Delete
* @return array Instance data.
[155] Fix | Delete
*/
[156] Fix | Delete
public function value() {
[157] Fix | Delete
if ( $this->is_previewed && get_current_blog_id() === $this->_previewed_blog_id ) {
[158] Fix | Delete
$undefined = new stdClass(); // Symbol.
[159] Fix | Delete
$post_value = $this->post_value( $undefined );
[160] Fix | Delete
[161] Fix | Delete
if ( $undefined === $post_value ) {
[162] Fix | Delete
$value = $this->_original_value;
[163] Fix | Delete
} else {
[164] Fix | Delete
$value = $post_value;
[165] Fix | Delete
}
[166] Fix | Delete
} else {
[167] Fix | Delete
$value = false;
[168] Fix | Delete
[169] Fix | Delete
// Note that a term_id of less than one indicates a nav_menu not yet inserted.
[170] Fix | Delete
if ( $this->term_id > 0 ) {
[171] Fix | Delete
$term = wp_get_nav_menu_object( $this->term_id );
[172] Fix | Delete
[173] Fix | Delete
if ( $term ) {
[174] Fix | Delete
$value = wp_array_slice_assoc( (array) $term, array_keys( $this->default ) );
[175] Fix | Delete
[176] Fix | Delete
$nav_menu_options = (array) get_option( 'nav_menu_options', array() );
[177] Fix | Delete
$value['auto_add'] = false;
[178] Fix | Delete
[179] Fix | Delete
if ( isset( $nav_menu_options['auto_add'] ) && is_array( $nav_menu_options['auto_add'] ) ) {
[180] Fix | Delete
$value['auto_add'] = in_array( $term->term_id, $nav_menu_options['auto_add'], true );
[181] Fix | Delete
}
[182] Fix | Delete
}
[183] Fix | Delete
}
[184] Fix | Delete
[185] Fix | Delete
if ( ! is_array( $value ) ) {
[186] Fix | Delete
$value = $this->default;
[187] Fix | Delete
}
[188] Fix | Delete
}
[189] Fix | Delete
[190] Fix | Delete
return $value;
[191] Fix | Delete
}
[192] Fix | Delete
[193] Fix | Delete
/**
[194] Fix | Delete
* Handle previewing the setting.
[195] Fix | Delete
*
[196] Fix | Delete
* @since 4.3.0
[197] Fix | Delete
* @since 4.4.0 Added boolean return value
[198] Fix | Delete
*
[199] Fix | Delete
* @see WP_Customize_Manager::post_value()
[200] Fix | Delete
*
[201] Fix | Delete
* @return bool False if method short-circuited due to no-op.
[202] Fix | Delete
*/
[203] Fix | Delete
public function preview() {
[204] Fix | Delete
if ( $this->is_previewed ) {
[205] Fix | Delete
return false;
[206] Fix | Delete
}
[207] Fix | Delete
[208] Fix | Delete
$undefined = new stdClass();
[209] Fix | Delete
$is_placeholder = ( $this->term_id < 0 );
[210] Fix | Delete
$is_dirty = ( $undefined !== $this->post_value( $undefined ) );
[211] Fix | Delete
if ( ! $is_placeholder && ! $is_dirty ) {
[212] Fix | Delete
return false;
[213] Fix | Delete
}
[214] Fix | Delete
[215] Fix | Delete
$this->is_previewed = true;
[216] Fix | Delete
$this->_original_value = $this->value();
[217] Fix | Delete
$this->_previewed_blog_id = get_current_blog_id();
[218] Fix | Delete
[219] Fix | Delete
add_filter( 'wp_get_nav_menus', array( $this, 'filter_wp_get_nav_menus' ), 10, 2 );
[220] Fix | Delete
add_filter( 'wp_get_nav_menu_object', array( $this, 'filter_wp_get_nav_menu_object' ), 10, 2 );
[221] Fix | Delete
add_filter( 'default_option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
[222] Fix | Delete
add_filter( 'option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
[223] Fix | Delete
[224] Fix | Delete
return true;
[225] Fix | Delete
}
[226] Fix | Delete
[227] Fix | Delete
/**
[228] Fix | Delete
* Filters the wp_get_nav_menus() result to ensure the inserted menu object is included, and the deleted one is removed.
[229] Fix | Delete
*
[230] Fix | Delete
* @since 4.3.0
[231] Fix | Delete
*
[232] Fix | Delete
* @see wp_get_nav_menus()
[233] Fix | Delete
*
[234] Fix | Delete
* @param WP_Term[] $menus An array of menu objects.
[235] Fix | Delete
* @param array $args An array of arguments used to retrieve menu objects.
[236] Fix | Delete
* @return WP_Term[] Array of menu objects.
[237] Fix | Delete
*/
[238] Fix | Delete
public function filter_wp_get_nav_menus( $menus, $args ) {
[239] Fix | Delete
if ( get_current_blog_id() !== $this->_previewed_blog_id ) {
[240] Fix | Delete
return $menus;
[241] Fix | Delete
}
[242] Fix | Delete
[243] Fix | Delete
$setting_value = $this->value();
[244] Fix | Delete
$is_delete = ( false === $setting_value );
[245] Fix | Delete
$index = -1;
[246] Fix | Delete
[247] Fix | Delete
// Find the existing menu item's position in the list.
[248] Fix | Delete
foreach ( $menus as $i => $menu ) {
[249] Fix | Delete
if ( (int) $this->term_id === (int) $menu->term_id || (int) $this->previous_term_id === (int) $menu->term_id ) {
[250] Fix | Delete
$index = $i;
[251] Fix | Delete
break;
[252] Fix | Delete
}
[253] Fix | Delete
}
[254] Fix | Delete
[255] Fix | Delete
if ( $is_delete ) {
[256] Fix | Delete
// Handle deleted menu by removing it from the list.
[257] Fix | Delete
if ( -1 !== $index ) {
[258] Fix | Delete
array_splice( $menus, $index, 1 );
[259] Fix | Delete
}
[260] Fix | Delete
} else {
[261] Fix | Delete
// Handle menus being updated or inserted.
[262] Fix | Delete
$menu_obj = (object) array_merge(
[263] Fix | Delete
array(
[264] Fix | Delete
'term_id' => $this->term_id,
[265] Fix | Delete
'term_taxonomy_id' => $this->term_id,
[266] Fix | Delete
'slug' => sanitize_title( $setting_value['name'] ),
[267] Fix | Delete
'count' => 0,
[268] Fix | Delete
'term_group' => 0,
[269] Fix | Delete
'taxonomy' => self::TAXONOMY,
[270] Fix | Delete
'filter' => 'raw',
[271] Fix | Delete
),
[272] Fix | Delete
$setting_value
[273] Fix | Delete
);
[274] Fix | Delete
[275] Fix | Delete
array_splice( $menus, $index, ( -1 === $index ? 0 : 1 ), array( $menu_obj ) );
[276] Fix | Delete
}
[277] Fix | Delete
[278] Fix | Delete
// Make sure the menu objects get re-sorted after an update/insert.
[279] Fix | Delete
if ( ! $is_delete && ! empty( $args['orderby'] ) ) {
[280] Fix | Delete
$menus = wp_list_sort(
[281] Fix | Delete
$menus,
[282] Fix | Delete
array(
[283] Fix | Delete
$args['orderby'] => 'ASC',
[284] Fix | Delete
)
[285] Fix | Delete
);
[286] Fix | Delete
}
[287] Fix | Delete
// @todo Add support for $args['hide_empty'] === true.
[288] Fix | Delete
[289] Fix | Delete
return $menus;
[290] Fix | Delete
}
[291] Fix | Delete
[292] Fix | Delete
/**
[293] Fix | Delete
* Temporary non-closure passing of orderby value to function.
[294] Fix | Delete
*
[295] Fix | Delete
* @since 4.3.0
[296] Fix | Delete
* @var string
[297] Fix | Delete
*
[298] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
[299] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::_sort_menus_by_orderby()
[300] Fix | Delete
*/
[301] Fix | Delete
protected $_current_menus_sort_orderby;
[302] Fix | Delete
[303] Fix | Delete
/**
[304] Fix | Delete
* Sort menu objects by the class-supplied orderby property.
[305] Fix | Delete
*
[306] Fix | Delete
* This is a workaround for a lack of closures.
[307] Fix | Delete
*
[308] Fix | Delete
* @since 4.3.0
[309] Fix | Delete
* @deprecated 4.7.0 Use wp_list_sort()
[310] Fix | Delete
*
[311] Fix | Delete
* @param object $menu1
[312] Fix | Delete
* @param object $menu2
[313] Fix | Delete
* @return int
[314] Fix | Delete
*
[315] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
[316] Fix | Delete
*/
[317] Fix | Delete
protected function _sort_menus_by_orderby( $menu1, $menu2 ) {
[318] Fix | Delete
_deprecated_function( __METHOD__, '4.7.0', 'wp_list_sort' );
[319] Fix | Delete
[320] Fix | Delete
$key = $this->_current_menus_sort_orderby;
[321] Fix | Delete
return strcmp( $menu1->$key, $menu2->$key );
[322] Fix | Delete
}
[323] Fix | Delete
[324] Fix | Delete
/**
[325] Fix | Delete
* Filters the wp_get_nav_menu_object() result to supply the previewed menu object.
[326] Fix | Delete
*
[327] Fix | Delete
* Requesting a nav_menu object by anything but ID is not supported.
[328] Fix | Delete
*
[329] Fix | Delete
* @since 4.3.0
[330] Fix | Delete
*
[331] Fix | Delete
* @see wp_get_nav_menu_object()
[332] Fix | Delete
*
[333] Fix | Delete
* @param object|null $menu_obj Object returned by wp_get_nav_menu_object().
[334] Fix | Delete
* @param string $menu_id ID of the nav_menu term. Requests by slug or name will be ignored.
[335] Fix | Delete
* @return object|null
[336] Fix | Delete
*/
[337] Fix | Delete
public function filter_wp_get_nav_menu_object( $menu_obj, $menu_id ) {
[338] Fix | Delete
$ok = (
[339] Fix | Delete
get_current_blog_id() === $this->_previewed_blog_id
[340] Fix | Delete
&&
[341] Fix | Delete
is_int( $menu_id )
[342] Fix | Delete
&&
[343] Fix | Delete
$menu_id === $this->term_id
[344] Fix | Delete
);
[345] Fix | Delete
if ( ! $ok ) {
[346] Fix | Delete
return $menu_obj;
[347] Fix | Delete
}
[348] Fix | Delete
[349] Fix | Delete
$setting_value = $this->value();
[350] Fix | Delete
[351] Fix | Delete
// Handle deleted menus.
[352] Fix | Delete
if ( false === $setting_value ) {
[353] Fix | Delete
return false;
[354] Fix | Delete
}
[355] Fix | Delete
[356] Fix | Delete
// Handle sanitization failure by preventing short-circuiting.
[357] Fix | Delete
if ( null === $setting_value ) {
[358] Fix | Delete
return $menu_obj;
[359] Fix | Delete
}
[360] Fix | Delete
[361] Fix | Delete
$menu_obj = (object) array_merge(
[362] Fix | Delete
array(
[363] Fix | Delete
'term_id' => $this->term_id,
[364] Fix | Delete
'term_taxonomy_id' => $this->term_id,
[365] Fix | Delete
'slug' => sanitize_title( $setting_value['name'] ),
[366] Fix | Delete
'count' => 0,
[367] Fix | Delete
'term_group' => 0,
[368] Fix | Delete
'taxonomy' => self::TAXONOMY,
[369] Fix | Delete
'filter' => 'raw',
[370] Fix | Delete
),
[371] Fix | Delete
$setting_value
[372] Fix | Delete
);
[373] Fix | Delete
[374] Fix | Delete
return $menu_obj;
[375] Fix | Delete
}
[376] Fix | Delete
[377] Fix | Delete
/**
[378] Fix | Delete
* Filters the nav_menu_options option to include this menu's auto_add preference.
[379] Fix | Delete
*
[380] Fix | Delete
* @since 4.3.0
[381] Fix | Delete
*
[382] Fix | Delete
* @param array $nav_menu_options Nav menu options including auto_add.
[383] Fix | Delete
* @return array (Maybe) modified nav menu options.
[384] Fix | Delete
*/
[385] Fix | Delete
public function filter_nav_menu_options( $nav_menu_options ) {
[386] Fix | Delete
if ( get_current_blog_id() !== $this->_previewed_blog_id ) {
[387] Fix | Delete
return $nav_menu_options;
[388] Fix | Delete
}
[389] Fix | Delete
[390] Fix | Delete
$menu = $this->value();
[391] Fix | Delete
$nav_menu_options = $this->filter_nav_menu_options_value(
[392] Fix | Delete
$nav_menu_options,
[393] Fix | Delete
$this->term_id,
[394] Fix | Delete
false === $menu ? false : $menu['auto_add']
[395] Fix | Delete
);
[396] Fix | Delete
[397] Fix | Delete
return $nav_menu_options;
[398] Fix | Delete
}
[399] Fix | Delete
[400] Fix | Delete
/**
[401] Fix | Delete
* Sanitize an input.
[402] Fix | Delete
*
[403] Fix | Delete
* Note that parent::sanitize() erroneously does wp_unslash() on $value, but
[404] Fix | Delete
* we remove that in this override.
[405] Fix | Delete
*
[406] Fix | Delete
* @since 4.3.0
[407] Fix | Delete
*
[408] Fix | Delete
* @param array $value The menu value to sanitize.
[409] Fix | Delete
* @return array|false|null Null if an input isn't valid. False if it is marked for deletion.
[410] Fix | Delete
* Otherwise the sanitized value.
[411] Fix | Delete
*/
[412] Fix | Delete
public function sanitize( $value ) {
[413] Fix | Delete
// Menu is marked for deletion.
[414] Fix | Delete
if ( false === $value ) {
[415] Fix | Delete
return $value;
[416] Fix | Delete
}
[417] Fix | Delete
[418] Fix | Delete
// Invalid.
[419] Fix | Delete
if ( ! is_array( $value ) ) {
[420] Fix | Delete
return null;
[421] Fix | Delete
}
[422] Fix | Delete
[423] Fix | Delete
$default = array(
[424] Fix | Delete
'name' => '',
[425] Fix | Delete
'description' => '',
[426] Fix | Delete
'parent' => 0,
[427] Fix | Delete
'auto_add' => false,
[428] Fix | Delete
);
[429] Fix | Delete
$value = array_merge( $default, $value );
[430] Fix | Delete
$value = wp_array_slice_assoc( $value, array_keys( $default ) );
[431] Fix | Delete
[432] Fix | Delete
$value['name'] = trim( esc_html( $value['name'] ) ); // This sanitization code is used in wp-admin/nav-menus.php.
[433] Fix | Delete
$value['description'] = sanitize_text_field( $value['description'] );
[434] Fix | Delete
$value['parent'] = max( 0, (int) $value['parent'] );
[435] Fix | Delete
$value['auto_add'] = ! empty( $value['auto_add'] );
[436] Fix | Delete
[437] Fix | Delete
if ( '' === $value['name'] ) {
[438] Fix | Delete
$value['name'] = _x( '(unnamed)', 'Missing menu name.' );
[439] Fix | Delete
}
[440] Fix | Delete
[441] Fix | Delete
/** This filter is documented in wp-includes/class-wp-customize-setting.php */
[442] Fix | Delete
return apply_filters( "customize_sanitize_{$this->id}", $value, $this );
[443] Fix | Delete
}
[444] Fix | Delete
[445] Fix | Delete
/**
[446] Fix | Delete
* Storage for data to be sent back to client in customize_save_response filter.
[447] Fix | Delete
*
[448] Fix | Delete
* See {@see 'customize_save_response'}.
[449] Fix | Delete
*
[450] Fix | Delete
* @since 4.3.0
[451] Fix | Delete
* @var array
[452] Fix | Delete
*
[453] Fix | Delete
* @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
[454] Fix | Delete
*/
[455] Fix | Delete
protected $_widget_nav_menu_updates = array();
[456] Fix | Delete
[457] Fix | Delete
/**
[458] Fix | Delete
* Create/update the nav_menu term for this setting.
[459] Fix | Delete
*
[460] Fix | Delete
* Any created menus will have their assigned term IDs exported to the client
[461] Fix | Delete
* via the {@see 'customize_save_response'} filter. Likewise, any errors will be exported
[462] Fix | Delete
* to the client via the customize_save_response() filter.
[463] Fix | Delete
*
[464] Fix | Delete
* To delete a menu, the client can send false as the value.
[465] Fix | Delete
*
[466] Fix | Delete
* @since 4.3.0
[467] Fix | Delete
*
[468] Fix | Delete
* @see wp_update_nav_menu_object()
[469] Fix | Delete
*
[470] Fix | Delete
* @param array|false $value {
[471] Fix | Delete
* The value to update. Note that slug cannot be updated via wp_update_nav_menu_object().
[472] Fix | Delete
* If false, then the menu will be deleted entirely.
[473] Fix | Delete
*
[474] Fix | Delete
* @type string $name The name of the menu to save.
[475] Fix | Delete
* @type string $description The term description. Default empty string.
[476] Fix | Delete
* @type int $parent The id of the parent term. Default 0.
[477] Fix | Delete
* @type bool $auto_add Whether pages will auto_add to this menu. Default false.
[478] Fix | Delete
* }
[479] Fix | Delete
* @return null|void
[480] Fix | Delete
*/
[481] Fix | Delete
protected function update( $value ) {
[482] Fix | Delete
if ( $this->is_updated ) {
[483] Fix | Delete
return;
[484] Fix | Delete
}
[485] Fix | Delete
[486] Fix | Delete
$this->is_updated = true;
[487] Fix | Delete
$is_placeholder = ( $this->term_id < 0 );
[488] Fix | Delete
$is_delete = ( false === $value );
[489] Fix | Delete
[490] Fix | Delete
add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );
[491] Fix | Delete
[492] Fix | Delete
$auto_add = null;
[493] Fix | Delete
if ( $is_delete ) {
[494] Fix | Delete
// If the current setting term is a placeholder, a delete request is a no-op.
[495] Fix | Delete
if ( $is_placeholder ) {
[496] Fix | Delete
$this->update_status = 'deleted';
[497] Fix | Delete
} else {
[498] Fix | Delete
$r = wp_delete_nav_menu( $this->term_id );
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function