/** * Delete user interface settings. * * Deleting settings would reset them to the defaults. * * @package WordPress * @subpackage Option * @since 2.7.0 * * @param mixed $names The name or array of names of the setting to be deleted. */ function delete_user_setting($names) { global $current_user; $arr = get_all_user_settings(); $names = (array) $names; foreach ($names as $name) { if (isset($arr[$name])) { unset($arr[$name]); $settings = ''; } } if (isset($settings)) { foreach ($arr as $k => $v) { $settings .= $k . '=' . $v . '&'; } $settings = rtrim($settings, '&'); update_user_option($current_user->ID, 'user-settings', $settings); setcookie('wp-settings-' . $current_user->ID, $settings, time() + 31536000, SITECOOKIEPATH); } }
function set_user_setting($name, $value) { $all_user_settings = get_all_user_settings(); $all_user_settings[$name] = $value; return wp_set_all_user_settings($all_user_settings); }
/** * Delete user interface settings. * * Deleting settings would reset them to the defaults. * This function has to be used before any output has started as it calls setcookie(). * * @package WordPress * @subpackage Option * @since 2.7.0 * * @param mixed $names The name or array of names of the setting to be deleted. * @return bool true if deleted successfully/false if not. */ function delete_user_setting($names) { if (headers_sent()) { return false; } $all_user_settings = get_all_user_settings(); $names = (array) $names; $deleted = false; foreach ($names as $name) { if (isset($all_user_settings[$name])) { unset($all_user_settings[$name]); $deleted = true; } } if ($deleted) { return wp_set_all_user_settings($all_user_settings); } return false; }
/** * Display menu. * * @access private * @since 2.7.0 * * @param array $menu * @param array $submenu * @param bool $submenu_as_parent */ function _wp_menu_output($menu, $submenu, $submenu_as_parent = true) { global $self, $parent_file, $submenu_file, $plugin_page, $pagenow, $typenow; $menu_setting_increment = -1; $user_settings = get_all_user_settings(); $first = true; // 0 = name, 1 = capability, 2 = file, 3 = class, 4 = id, 5 = icon src foreach ($menu as $key => $item) { $admin_is_parent = false; $class = array(); if ($first) { $class[] = 'wp-first-item'; $first = false; } if (!empty($submenu[$item[2]])) { $class[] = 'wp-has-submenu'; $menu_setting_increment++; } if ($parent_file && $item[2] == $parent_file || empty($typenow) && $self == $item[2]) { if (!empty($submenu[$item[2]])) { $class[] = 'wp-has-current-submenu wp-menu-open'; } else { $class[] = 'current'; } } elseif (!empty($submenu[$item[2]]) && isset($user_settings['m' . $menu_setting_increment]) && 'o' == $user_settings['m' . $menu_setting_increment]) { $class[] = 'wp-menu-open'; } if (!empty($item[4])) { $class[] = $item[4]; } $class = $class ? ' class="' . join(' ', $class) . '"' : ''; $tabindex = ' tabindex="1"'; $id = !empty($item[5]) ? ' id="' . preg_replace('|[^a-zA-Z0-9_:.]|', '-', $item[5]) . '"' : ''; $img = ''; if (!empty($item[6])) { if ('div' === $item[6]) { $img = '<br />'; } else { $img = '<img src="' . $item[6] . '" alt="" />'; } } $toggle = '<div class="wp-menu-toggle"><br /></div>'; $arrow = '<div class="wp-menu-arrow"><div></div></div>'; $title = wptexturize($item[0]); echo "\n\t<li{$class}{$id}>"; if (false !== strpos($class, 'wp-menu-separator')) { echo '<div class="separator"></div>'; } elseif ($submenu_as_parent && !empty($submenu[$item[2]])) { $submenu[$item[2]] = array_values($submenu[$item[2]]); // Re-index. $menu_hook = get_plugin_page_hook($submenu[$item[2]][0][2], $item[2]); $menu_file = $submenu[$item[2]][0][2]; if (false !== ($pos = strpos($menu_file, '?'))) { $menu_file = substr($menu_file, 0, $pos); } if ('index.php' != $submenu[$item[2]][0][2] && file_exists(WP_PLUGIN_DIR . "/{$menu_file}") || !empty($menu_hook)) { $admin_is_parent = true; echo "<div class='wp-menu-image'><a href='admin.php?page={$submenu[$item[2]][0][2]}'>{$img}</a></div>{$arrow}{$toggle}<a href='admin.php?page={$submenu[$item[2]][0][2]}'{$class}{$tabindex}>{$title}</a>"; } else { echo "\n\t<div class='wp-menu-image'><a href='{$submenu[$item[2]][0][2]}'>{$img}</a></div>{$arrow}{$toggle}<a href='{$submenu[$item[2]][0][2]}'{$class}{$tabindex}>{$title}</a>"; } } else { if (!empty($item[2]) && current_user_can($item[1])) { $menu_hook = get_plugin_page_hook($item[2], 'admin.php'); $menu_file = $item[2]; if (false !== ($pos = strpos($menu_file, '?'))) { $menu_file = substr($menu_file, 0, $pos); } if ('index.php' != $item[2] && file_exists(WP_PLUGIN_DIR . "/{$menu_file}") || !empty($menu_hook)) { $admin_is_parent = true; echo "\n\t<div class='wp-menu-image'><a href='admin.php?page={$item[2]}'>{$img}</a></div>{$arrow}{$toggle}<a href='admin.php?page={$item[2]}'{$class}{$tabindex}>{$item[0]}</a>"; } else { echo "\n\t<div class='wp-menu-image'><a href='{$item[2]}'>{$img}</a></div>{$arrow}{$toggle}<a href='{$item[2]}'{$class}{$tabindex}>{$item[0]}</a>"; } } } if (!empty($submenu[$item[2]])) { echo "\n\t<div class='wp-submenu'><div class='wp-submenu-wrap'>"; echo "<div class='wp-submenu-head'>{$item[0]}</div><ul>"; $first = true; foreach ($submenu[$item[2]] as $sub_key => $sub_item) { if (!current_user_can($sub_item[1])) { continue; } $class = array(); if ($first) { $class[] = 'wp-first-item'; $first = false; } $menu_file = $item[2]; if (false !== ($pos = strpos($menu_file, '?'))) { $menu_file = substr($menu_file, 0, $pos); } // Handle current for post_type=post|page|foo pages, which won't match $self. if (!empty($typenow)) { $self_type = $self . '?post_type=' . $typenow; } else { $self_type = 'nothing'; } if (isset($submenu_file)) { if ($submenu_file == $sub_item[2]) { $class[] = 'current'; } // If plugin_page is set the parent must either match the current page or not physically exist. // This allows plugin pages with the same hook to exist under different parents. } else { if (isset($plugin_page) && $plugin_page == $sub_item[2] && (!file_exists($menu_file) || $item[2] == $self || $item[2] == $self_type) || !isset($plugin_page) && $self == $sub_item[2]) { $class[] = 'current'; } } $class = $class ? ' class="' . join(' ', $class) . '"' : ''; $menu_hook = get_plugin_page_hook($sub_item[2], $item[2]); $sub_file = $sub_item[2]; if (false !== ($pos = strpos($sub_file, '?'))) { $sub_file = substr($sub_file, 0, $pos); } $title = wptexturize($sub_item[0]); if ('index.php' != $sub_item[2] && file_exists(WP_PLUGIN_DIR . "/{$sub_file}") || !empty($menu_hook)) { // If admin.php is the current page or if the parent exists as a file in the plugins or admin dir if (!$admin_is_parent && file_exists(WP_PLUGIN_DIR . "/{$menu_file}") && !is_dir(WP_PLUGIN_DIR . "/{$item[2]}") || file_exists($menu_file)) { $sub_item_url = add_query_arg(array('page' => $sub_item[2]), $item[2]); } else { $sub_item_url = add_query_arg(array('page' => $sub_item[2]), 'admin.php'); } $sub_item_url = esc_url($sub_item_url); echo "<li{$class}><a href='{$sub_item_url}'{$class}{$tabindex}>{$title}</a></li>"; } else { echo "<li{$class}><a href='{$sub_item[2]}'{$class}{$tabindex}>{$title}</a></li>"; } } echo "</ul></div></div>"; } echo "</li>"; } echo '<li id="collapse-menu" class="hide-if-no-js"><div id="collapse-button"><div></div></div>'; echo '<span>' . esc_html__('Collapse menu') . '</span>'; echo '</li>'; }