Version Description
- Fixed a minor conflict with Toolset Types.
- Fixed a conflict with the MailPoet plugin where it was not possible to change the plugin's menu icon.
- Fixed a bug where the plugin could misidentify certain core menus that have different URLs for different roles.
- Fixed a bug where the plugin could generate incorrect URLs for submenu items where the parent menu URL contained HTML entities like "&".
- Fixed an issue where certain vulnerability scanners showed a warning about one of the plugin files because it used the eval() function. This particular instance of eval() was not a security flaw, but it has been now been removed to prevent false positives.
- Fixed a bug where the plugin could show an incorrect error message when a menu item was hidden due to there being another hidden menu item with the same URL.
- Fixed a minor issue with field alignment in menu properties.
- The "Site Health" menu will no longer be highlighted as new because it's part of WordPress core.
Download this release
Release Info
Developer | whiteshadow |
Plugin | Admin Menu Editor |
Version | 1.9.1 |
Comparing to | |
See all releases |
Code changes from version 1.9 to 1.9.1
- css/force-dashicons.css +2 -0
- css/force-dashicons.css.map +1 -1
- css/force-dashicons.scss +5 -0
- css/menu-editor.css +1 -0
- css/menu-editor.scss +1 -0
- includes/PHP-CSS-Parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php +13 -3
- includes/menu-editor-core.php +31 -9
- includes/menu-item.php +14 -3
- js/actor-manager.js +1 -1
- js/menu-highlight-fix.js +1 -1
- menu-editor.php +1 -1
- modules/actor-selector/actor-selector.js +1 -1
- modules/highlight-new-menus/wsNewMenuHighlighter.php +3 -0
- readme.txt +11 -1
css/force-dashicons.css
CHANGED
@@ -16,6 +16,8 @@
|
|
16 |
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon > .wp-menu-image::before {
|
17 |
font-family: "dashicons", sans-serif !important;
|
18 |
font-size: 20px !important; }
|
|
|
|
|
19 |
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon .dashicons-menu:before {
|
20 |
content: "\f333" !important; }
|
21 |
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon .dashicons-admin-site:before {
|
16 |
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon > .wp-menu-image::before {
|
17 |
font-family: "dashicons", sans-serif !important;
|
18 |
font-size: 20px !important; }
|
19 |
+
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon > .wp-menu-image {
|
20 |
+
background-image: none; }
|
21 |
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon .dashicons-menu:before {
|
22 |
content: "\f333" !important; }
|
23 |
#adminmenu#adminmenu#adminmenu a.ame-has-custom-dashicon .dashicons-admin-site:before {
|
css/force-dashicons.css.map
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
{
|
2 |
"version": 3,
|
3 |
-
"mappings": "AAAA;;;;;;;;;EASE;AAGF,wDAAyD;ECZzD;;;IAGE;EDUD,iFAA2B;IAC1B,WAAW,EAAE,kCAAkC;IAC/C,SAAS,EAAE,eAAe;
|
4 |
"sources": ["force-dashicons.scss","_dashicons.scss"],
|
5 |
"names": [],
|
6 |
"file": "force-dashicons.css"
|
1 |
{
|
2 |
"version": 3,
|
3 |
+
"mappings": "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",
|
4 |
"sources": ["force-dashicons.scss","_dashicons.scss"],
|
5 |
"names": [],
|
6 |
"file": "force-dashicons.css"
|
css/force-dashicons.scss
CHANGED
@@ -16,5 +16,10 @@
|
|
16 |
font-size: 20px !important;
|
17 |
}
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
@import '_dashicons';
|
20 |
}
|
16 |
font-size: 20px !important;
|
17 |
}
|
18 |
|
19 |
+
//Some plugins set the icon as a background image instead of a pseudo-element.
|
20 |
+
& > .wp-menu-image {
|
21 |
+
background-image: none;
|
22 |
+
}
|
23 |
+
|
24 |
@import '_dashicons';
|
25 |
}
|
css/menu-editor.css
CHANGED
@@ -822,6 +822,7 @@ a#ws-ame-delete-color-preset:hover {
|
|
822 |
height: 26px;
|
823 |
width: 190px;
|
824 |
margin-right: 5px;
|
|
|
825 |
padding: 2px 4px;
|
826 |
font-size: 12px;
|
827 |
border: 1px solid #ddd;
|
822 |
height: 26px;
|
823 |
width: 190px;
|
824 |
margin-right: 5px;
|
825 |
+
margin-left: 1px;
|
826 |
padding: 2px 4px;
|
827 |
font-size: 12px;
|
828 |
border: 1px solid #ddd;
|
css/menu-editor.scss
CHANGED
@@ -1119,6 +1119,7 @@ $colorFieldRightMargin: 5px;
|
|
1119 |
width: $colorFieldWidth;
|
1120 |
|
1121 |
margin-right: $colorFieldRightMargin;
|
|
|
1122 |
padding: 2px 4px;
|
1123 |
|
1124 |
font-size: 12px;
|
1119 |
width: $colorFieldWidth;
|
1120 |
|
1121 |
margin-right: $colorFieldRightMargin;
|
1122 |
+
margin-left: 1px;
|
1123 |
padding: 2px 4px;
|
1124 |
|
1125 |
font-size: 12px;
|
includes/PHP-CSS-Parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php
CHANGED
@@ -65,9 +65,19 @@ abstract class CSSBlockList extends CSSList {
|
|
65 |
if ($sSpecificitySearch === null) {
|
66 |
$aResult[] = $oSelector;
|
67 |
} else {
|
68 |
-
|
69 |
-
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
$aResult[] = $oSelector;
|
72 |
}
|
73 |
}
|
65 |
if ($sSpecificitySearch === null) {
|
66 |
$aResult[] = $oSelector;
|
67 |
} else {
|
68 |
+
//WSH: The original implementation used eval to compare specificity. I rewrote it
|
69 |
+
//to use version_compare instead to prevent false positives in vulnerability scanners.
|
70 |
+
//It's a bit of a hack, but it's shorter than a big switch statement.
|
71 |
+
$specificity = $oSelector->getSpecificity();
|
72 |
+
$isMatch = false;
|
73 |
+
if ( preg_match(
|
74 |
+
'/^(?P<operator>(?:[<>]=?)|(?:!==?)|={2,3})\s*?(?P<number>\d++)$/',
|
75 |
+
trim($sSpecificitySearch),
|
76 |
+
$matches
|
77 |
+
) ) {
|
78 |
+
$isMatch = version_compare((string)$specificity, $matches['number'], $matches['operator']);
|
79 |
+
}
|
80 |
+
if ($isMatch) {
|
81 |
$aResult[] = $oSelector;
|
82 |
}
|
83 |
}
|
includes/menu-editor-core.php
CHANGED
@@ -1817,11 +1817,16 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
1817 |
$trueAccess = isset($this->page_access_lookup[$topmenu['url']]) ? $this->page_access_lookup[$topmenu['url']] : null;
|
1818 |
if ( ($trueAccess === 'do_not_allow') && ($topmenu['access_level'] !== $trueAccess) ) {
|
1819 |
$topmenu['access_level'] = $trueAccess;
|
|
|
|
|
|
|
|
|
|
|
|
|
1820 |
if ( isset($topmenu['access_check_log']) ) {
|
1821 |
$topmenu['access_check_log'][] = sprintf(
|
1822 |
-
'+ Override:
|
1823 |
-
|
1824 |
-
$topmenu['url'],
|
1825 |
$trueAccess
|
1826 |
);
|
1827 |
$topmenu['access_check_log'][] = str_repeat('=', 79);
|
@@ -1837,11 +1842,16 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
1837 |
$trueAccess = isset($this->page_access_lookup[$item['url']]) ? $this->page_access_lookup[$item['url']] : null;
|
1838 |
if ( ($trueAccess === 'do_not_allow') && ($item['access_level'] !== $trueAccess) ) {
|
1839 |
$item['access_level'] = $trueAccess;
|
|
|
|
|
|
|
|
|
|
|
|
|
1840 |
if ( isset($item['access_check_log']) ) {
|
1841 |
$item['access_check_log'][] = sprintf(
|
1842 |
-
'+ Override:
|
1843 |
-
|
1844 |
-
$item['url'],
|
1845 |
$trueAccess
|
1846 |
);
|
1847 |
$item['access_check_log'][] = str_repeat('=', 79);
|
@@ -2273,6 +2283,7 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
2273 |
}
|
2274 |
|
2275 |
echo "Fetch option {$option}<br>";
|
|
|
2276 |
$row = $wpdb->get_row($wpdb->prepare(
|
2277 |
"SELECT * FROM {$wpdb->sitemeta} WHERE meta_key = %s LIMIT 1",
|
2278 |
$option
|
@@ -2566,7 +2577,14 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
2566 |
*/
|
2567 |
private function get_default_menu() {
|
2568 |
$default_tree = ameMenu::wp2tree($this->default_wp_menu, $this->default_wp_submenu, $this->menu_url_blacklist);
|
2569 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2570 |
return $default_menu;
|
2571 |
}
|
2572 |
|
@@ -2723,7 +2741,11 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
2723 |
return $this->cached_virtual_caps[$mode];
|
2724 |
}
|
2725 |
|
2726 |
-
|
|
|
|
|
|
|
|
|
2727 |
if ( $custom_menu === null ){
|
2728 |
return array();
|
2729 |
}
|
@@ -3462,7 +3484,7 @@ class WPMenuEditor extends MenuEd_ShadowPluginFramework {
|
|
3462 |
'ame-force-dashicons',
|
3463 |
plugins_url('css/force-dashicons.css', $this->plugin_file),
|
3464 |
array(),
|
3465 |
-
'
|
3466 |
);
|
3467 |
}
|
3468 |
}
|
1817 |
$trueAccess = isset($this->page_access_lookup[$topmenu['url']]) ? $this->page_access_lookup[$topmenu['url']] : null;
|
1818 |
if ( ($trueAccess === 'do_not_allow') && ($topmenu['access_level'] !== $trueAccess) ) {
|
1819 |
$topmenu['access_level'] = $trueAccess;
|
1820 |
+
$reason = sprintf(
|
1821 |
+
'There is a hidden menu item with the same URL (%1$s) but a higher priority.',
|
1822 |
+
$topmenu['url']
|
1823 |
+
);
|
1824 |
+
$item['access_decision_reason'] = $reason;
|
1825 |
+
|
1826 |
if ( isset($topmenu['access_check_log']) ) {
|
1827 |
$topmenu['access_check_log'][] = sprintf(
|
1828 |
+
'+ Override: %1$s Setting the capability to "%2$s".',
|
1829 |
+
$reason,
|
|
|
1830 |
$trueAccess
|
1831 |
);
|
1832 |
$topmenu['access_check_log'][] = str_repeat('=', 79);
|
1842 |
$trueAccess = isset($this->page_access_lookup[$item['url']]) ? $this->page_access_lookup[$item['url']] : null;
|
1843 |
if ( ($trueAccess === 'do_not_allow') && ($item['access_level'] !== $trueAccess) ) {
|
1844 |
$item['access_level'] = $trueAccess;
|
1845 |
+
$reason = sprintf(
|
1846 |
+
'There is a hidden menu item with the same URL (%1$s) but a higher priority.',
|
1847 |
+
$item['url']
|
1848 |
+
);
|
1849 |
+
$item['access_decision_reason'] = $reason;
|
1850 |
+
|
1851 |
if ( isset($item['access_check_log']) ) {
|
1852 |
$item['access_check_log'][] = sprintf(
|
1853 |
+
'+ Override: %1$s Setting the capability to "%2$s".',
|
1854 |
+
$reason,
|
|
|
1855 |
$trueAccess
|
1856 |
);
|
1857 |
$item['access_check_log'][] = str_repeat('=', 79);
|
2283 |
}
|
2284 |
|
2285 |
echo "Fetch option {$option}<br>";
|
2286 |
+
/** @noinspection SqlResolve */
|
2287 |
$row = $wpdb->get_row($wpdb->prepare(
|
2288 |
"SELECT * FROM {$wpdb->sitemeta} WHERE meta_key = %s LIMIT 1",
|
2289 |
$option
|
2577 |
*/
|
2578 |
private function get_default_menu() {
|
2579 |
$default_tree = ameMenu::wp2tree($this->default_wp_menu, $this->default_wp_submenu, $this->menu_url_blacklist);
|
2580 |
+
try {
|
2581 |
+
$default_menu = ameMenu::load_array($default_tree);
|
2582 |
+
} catch (InvalidMenuException $e) {
|
2583 |
+
throw new LogicException(
|
2584 |
+
'An unexpected exception was thrown while loading the default admin menu. '
|
2585 |
+
. 'This is most likely a bug. The default menu should always be valid.'
|
2586 |
+
);
|
2587 |
+
}
|
2588 |
return $default_menu;
|
2589 |
}
|
2590 |
|
2741 |
return $this->cached_virtual_caps[$mode];
|
2742 |
}
|
2743 |
|
2744 |
+
try {
|
2745 |
+
$custom_menu = $this->load_custom_menu();
|
2746 |
+
} catch (InvalidMenuException $e) {
|
2747 |
+
return array();
|
2748 |
+
}
|
2749 |
if ( $custom_menu === null ){
|
2750 |
return array();
|
2751 |
}
|
3484 |
'ame-force-dashicons',
|
3485 |
plugins_url('css/force-dashicons.css', $this->plugin_file),
|
3486 |
array(),
|
3487 |
+
'20190810'
|
3488 |
);
|
3489 |
}
|
3490 |
}
|
includes/menu-item.php
CHANGED
@@ -31,6 +31,8 @@ abstract class ameMenuItem {
|
|
31 |
'upload.php' => true, 'user-new.php' => true, 'users.php' => true, 'widgets.php' => true,
|
32 |
);
|
33 |
|
|
|
|
|
34 |
/**
|
35 |
* Convert a WP menu structure to an associative array.
|
36 |
*
|
@@ -111,6 +113,7 @@ abstract class ameMenuItem {
|
|
111 |
//Internal fields that may not map directly to WP menu structures.
|
112 |
'open_in' => 'same_window', //'new_window', 'iframe' or 'same_window' (the default)
|
113 |
'iframe_height' => 0,
|
|
|
114 |
'template_id' => '', //The default menu item that this item is based on.
|
115 |
'is_plugin_page' => false,
|
116 |
'custom' => false,
|
@@ -163,6 +166,7 @@ abstract class ameMenuItem {
|
|
163 |
'icon_url' => 'dashicons-admin-generic',
|
164 |
'open_in' => 'same_window',
|
165 |
'iframe_height' => 0,
|
|
|
166 |
'is_plugin_page' => false,
|
167 |
'page_heading' => '',
|
168 |
'colors' => false,
|
@@ -238,8 +242,15 @@ abstract class ameMenuItem {
|
|
238 |
}
|
239 |
}
|
240 |
|
241 |
-
|
242 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
244 |
|
245 |
//Special case: In WP 4.0+ the URL of the "Appearance -> Customize" item is different on every admin page.
|
@@ -510,7 +521,7 @@ abstract class ameMenuItem {
|
|
510 |
|
511 |
if ( self::is_hook_or_plugin_page($menu_url, $parent_url, $has_hook) ) {
|
512 |
$parent_file = self::remove_query_from($parent_url);
|
513 |
-
$base_file = self::is_wp_admin_file($parent_file) ? $parent_url : 'admin.php';
|
514 |
//add_query_arg() might be more robust, but it's significantly slower.
|
515 |
$url = $base_file
|
516 |
. ((strpos($base_file, '?') === false) ? '?' : '&')
|
31 |
'upload.php' => true, 'user-new.php' => true, 'users.php' => true, 'widgets.php' => true,
|
32 |
);
|
33 |
|
34 |
+
private static $mappable_parent_whitelist = '@^(?:profile|import|post-new|edit-tags)\.php@';
|
35 |
+
|
36 |
/**
|
37 |
* Convert a WP menu structure to an associative array.
|
38 |
*
|
113 |
//Internal fields that may not map directly to WP menu structures.
|
114 |
'open_in' => 'same_window', //'new_window', 'iframe' or 'same_window' (the default)
|
115 |
'iframe_height' => 0,
|
116 |
+
'is_iframe_scroll_disabled' => false,
|
117 |
'template_id' => '', //The default menu item that this item is based on.
|
118 |
'is_plugin_page' => false,
|
119 |
'custom' => false,
|
166 |
'icon_url' => 'dashicons-admin-generic',
|
167 |
'open_in' => 'same_window',
|
168 |
'iframe_height' => 0,
|
169 |
+
'is_iframe_scroll_disabled' => false,
|
170 |
'is_plugin_page' => false,
|
171 |
'page_heading' => '',
|
172 |
'colors' => false,
|
242 |
}
|
243 |
}
|
244 |
|
245 |
+
//Map known alternative parents to admin parent menus. This is necessary to ensure that
|
246 |
+
//certain menu items have the same template ID both for admins and for regular users.
|
247 |
+
static $inverse_parent_map = null;
|
248 |
+
global $_wp_real_parent_file;
|
249 |
+
if ( ($inverse_parent_map === null) && !empty($_wp_real_parent_file) && is_array($_wp_real_parent_file) ) {
|
250 |
+
$inverse_parent_map = array_flip($_wp_real_parent_file);
|
251 |
+
}
|
252 |
+
if ( isset($inverse_parent_map[$parent_file]) && (preg_match(self::$mappable_parent_whitelist, $parent_file) === 1) ) {
|
253 |
+
$parent_file = $inverse_parent_map[$parent_file];
|
254 |
}
|
255 |
|
256 |
//Special case: In WP 4.0+ the URL of the "Appearance -> Customize" item is different on every admin page.
|
521 |
|
522 |
if ( self::is_hook_or_plugin_page($menu_url, $parent_url, $has_hook) ) {
|
523 |
$parent_file = self::remove_query_from($parent_url);
|
524 |
+
$base_file = self::is_wp_admin_file($parent_file) ? html_entity_decode($parent_url) : 'admin.php';
|
525 |
//add_query_arg() might be more robust, but it's significantly slower.
|
526 |
$url = $base_file
|
527 |
. ((strpos($base_file, '?') === false) ? '?' : '&')
|
js/actor-manager.js
CHANGED
@@ -132,9 +132,9 @@ var AmeSuperAdmin = /** @class */ (function (_super) {
|
|
132 |
}(AmeBaseActor));
|
133 |
var AmeActorManager = /** @class */ (function () {
|
134 |
function AmeActorManager(roles, users, isMultisite, suspectedMetaCaps) {
|
|
|
135 |
if (isMultisite === void 0) { isMultisite = false; }
|
136 |
if (suspectedMetaCaps === void 0) { suspectedMetaCaps = {}; }
|
137 |
-
var _this = this;
|
138 |
this.roles = {};
|
139 |
this.users = {};
|
140 |
this.grantedCapabilities = {};
|
132 |
}(AmeBaseActor));
|
133 |
var AmeActorManager = /** @class */ (function () {
|
134 |
function AmeActorManager(roles, users, isMultisite, suspectedMetaCaps) {
|
135 |
+
var _this = this;
|
136 |
if (isMultisite === void 0) { isMultisite = false; }
|
137 |
if (suspectedMetaCaps === void 0) { suspectedMetaCaps = {}; }
|
|
|
138 |
this.roles = {};
|
139 |
this.users = {};
|
140 |
this.grantedCapabilities = {};
|
js/menu-highlight-fix.js
CHANGED
@@ -244,7 +244,7 @@ jQuery(function($) {
|
|
244 |
//If a submenu is highlighted, so must be its parent.
|
245 |
//In some cases, if we decide to stick with the WP-selected highlighted menu,
|
246 |
//this might not be the case and we'll need to fix it.
|
247 |
-
var parentOfHighlightedMenu = $('.wp-submenu a.current', '#adminmenu').closest('.menu-top');
|
248 |
parentOfHighlightedMenu
|
249 |
.add('> a.menu-top', parentOfHighlightedMenu)
|
250 |
.removeClass('wp-not-current-submenu')
|
244 |
//If a submenu is highlighted, so must be its parent.
|
245 |
//In some cases, if we decide to stick with the WP-selected highlighted menu,
|
246 |
//this might not be the case and we'll need to fix it.
|
247 |
+
var parentOfHighlightedMenu = $('.wp-submenu a.current', '#adminmenu').closest('.menu-top').first();
|
248 |
parentOfHighlightedMenu
|
249 |
.add('> a.menu-top', parentOfHighlightedMenu)
|
250 |
.removeClass('wp-not-current-submenu')
|
menu-editor.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Admin Menu Editor
|
4 |
Plugin URI: http://w-shadow.com/blog/2008/12/20/admin-menu-editor-for-wordpress/
|
5 |
Description: Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more.
|
6 |
-
Version: 1.9
|
7 |
Author: Janis Elsts
|
8 |
Author URI: http://w-shadow.com/blog/
|
9 |
*/
|
3 |
Plugin Name: Admin Menu Editor
|
4 |
Plugin URI: http://w-shadow.com/blog/2008/12/20/admin-menu-editor-for-wordpress/
|
5 |
Description: Lets you directly edit the WordPress admin menu. You can re-order, hide or rename existing menus, add custom menus and more.
|
6 |
+
Version: 1.9.1
|
7 |
Author: Janis Elsts
|
8 |
Author URI: http://w-shadow.com/blog/
|
9 |
*/
|
modules/actor-selector/actor-selector.js
CHANGED
@@ -3,8 +3,8 @@
|
|
3 |
/// <reference path="../../js/actor-manager.ts" />
|
4 |
var AmeActorSelector = /** @class */ (function () {
|
5 |
function AmeActorSelector(actorManager, isProVersion, allOptionEnabled) {
|
6 |
-
if (allOptionEnabled === void 0) { allOptionEnabled = true; }
|
7 |
var _this = this;
|
|
|
8 |
this.selectedActor = null;
|
9 |
this.selectedDisplayName = 'All';
|
10 |
this.visibleUsers = [];
|
3 |
/// <reference path="../../js/actor-manager.ts" />
|
4 |
var AmeActorSelector = /** @class */ (function () {
|
5 |
function AmeActorSelector(actorManager, isProVersion, allOptionEnabled) {
|
|
|
6 |
var _this = this;
|
7 |
+
if (allOptionEnabled === void 0) { allOptionEnabled = true; }
|
8 |
this.selectedActor = null;
|
9 |
this.selectedDisplayName = 'All';
|
10 |
this.visibleUsers = [];
|
modules/highlight-new-menus/wsNewMenuHighlighter.php
CHANGED
@@ -37,6 +37,7 @@ class wsNewMenuHighlighter {
|
|
37 |
'post-new.php' => true,
|
38 |
'profile.php' => true,
|
39 |
'privacy.php' => true,
|
|
|
40 |
'theme-editor.php' => true,
|
41 |
'themes.php' => true,
|
42 |
'tools.php' => true,
|
@@ -51,6 +52,8 @@ class wsNewMenuHighlighter {
|
|
51 |
'sites.php' => true,
|
52 |
'theme-install.php' => true,
|
53 |
'upgrade.php' => true,
|
|
|
|
|
54 |
);
|
55 |
|
56 |
private $menusWithNewSubmenus = array();
|
37 |
'post-new.php' => true,
|
38 |
'profile.php' => true,
|
39 |
'privacy.php' => true,
|
40 |
+
'site-health.php' => true,
|
41 |
'theme-editor.php' => true,
|
42 |
'themes.php' => true,
|
43 |
'tools.php' => true,
|
52 |
'sites.php' => true,
|
53 |
'theme-install.php' => true,
|
54 |
'upgrade.php' => true,
|
55 |
+
//Hidden ACF menu. It's used to show the "Welcome to Advanced Custom Fields" page.
|
56 |
+
'edit.php?post_type=acf-field-group&page=acf-settings-info' => true,
|
57 |
);
|
58 |
|
59 |
private $menusWithNewSubmenus = array();
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
|
|
4 |
Tags: admin, dashboard, menu, security, wpmu
|
5 |
Requires at least: 4.1
|
6 |
Tested up to: 5.2
|
7 |
-
Stable tag: 1.9
|
8 |
|
9 |
Lets you edit the WordPress admin menu. You can re-order, hide or rename menus, add custom menus and more.
|
10 |
|
@@ -63,6 +63,16 @@ Plugins installed in the `mu-plugins` directory are treated as "always on", so y
|
|
63 |
|
64 |
== Changelog ==
|
65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
= 1.9 =
|
67 |
* Added an option to automatically hide new plugins. It was already possible, but previously this option was tied to the "show all plugins" checkbox. Now there is a separate "New plugins" checkbox.
|
68 |
* Fixed a bug where trying to change the icon of the Jetpack menu caused a JavaScript error that prevented the icon selector from being displayed.
|
4 |
Tags: admin, dashboard, menu, security, wpmu
|
5 |
Requires at least: 4.1
|
6 |
Tested up to: 5.2
|
7 |
+
Stable tag: 1.9.1
|
8 |
|
9 |
Lets you edit the WordPress admin menu. You can re-order, hide or rename menus, add custom menus and more.
|
10 |
|
63 |
|
64 |
== Changelog ==
|
65 |
|
66 |
+
= 1.9.1 =
|
67 |
+
* Fixed a minor conflict with Toolset Types.
|
68 |
+
* Fixed a conflict with the MailPoet plugin where it was not possible to change the plugin's menu icon.
|
69 |
+
* Fixed a bug where the plugin could misidentify certain core menus that have different URLs for different roles.
|
70 |
+
* Fixed a bug where the plugin could generate incorrect URLs for submenu items where the parent menu URL contained HTML entities like "&".
|
71 |
+
* Fixed an issue where certain vulnerability scanners showed a warning about one of the plugin files because it used the eval() function. This particular instance of eval() was not a security flaw, but it has been now been removed to prevent false positives.
|
72 |
+
* Fixed a bug where the plugin could show an incorrect error message when a menu item was hidden due to there being another hidden menu item with the same URL.
|
73 |
+
* Fixed a minor issue with field alignment in menu properties.
|
74 |
+
* The "Site Health" menu will no longer be highlighted as new because it's part of WordPress core.
|
75 |
+
|
76 |
= 1.9 =
|
77 |
* Added an option to automatically hide new plugins. It was already possible, but previously this option was tied to the "show all plugins" checkbox. Now there is a separate "New plugins" checkbox.
|
78 |
* Fixed a bug where trying to change the icon of the Jetpack menu caused a JavaScript error that prevented the icon selector from being displayed.
|