diff --git a/wp-admin/includes/plugin.php b/wp-admin/includes/plugin.php
index 6e332c247e..afeb62b1ac 100644
--- a/wp-admin/includes/plugin.php
+++ b/wp-admin/includes/plugin.php
@@ -1307,13 +1307,17 @@ function uninstall_plugin( $plugin ) {
  *                               e.g. 'dashicons-chart-pie'.
  *                             * Pass 'none' to leave div.wp-menu-image empty so an icon can be added via CSS.
  * @param int      $position   The position in the menu order this item should appear.
- * @return string The resulting page's hook_suffix.
+ * @return string|false The resulting page's hook_suffix, or false if the menu item already exists.
  */
 function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) {
        global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages;

        $menu_slug = plugin_basename( $menu_slug );

+       if ( isset( $_parent_pages[ $menu_slug ] ) ) {
+               return false;
+       }
+
        $admin_page_hooks[ $menu_slug ] = sanitize_title( $menu_title );

        $hookname = get_plugin_page_hookname( $menu_slug, '' );