add_action must be inside the plugin class and should look like
add_action( 'admin_menu', array( $this, 'add_menu_items' ) );
Usually this line presents in the __construct() method.
Related Posts:
- Set different custom menu items for different user roles
- Add a page in admin without adding menu item
- add_menu_page() with different name for first submenu item
- Passing arguments to a admin menu page callback?
- Admin settings update updating every time home page is hit?
- What’s the best method for emptying an option created with the Settings API?
- What is the recommended way to create plugin administration forms?
- How to add a new plugin page under desired Options page?
- Is it possible to add an admin page using add_submenu_page() and pass a var in the query string?
- Overwriting Core WordPress Functions with Plugins
- Naming Admin Menus and Submenus
- Current class on admin menu using add_submenu_page()
- Add Admin Menu Inside Construct or Init
- Master menu item for multiple plugins?
- Hook event for upload image in the menu
- Menu Error in Admin Console with Custom Plugin: You do not have sufficient permissions to access this page
- How to add Font Awesome 5 icons in WP Admin dashboard menu?
- How to put placeholder text in the main post input area?
- Unified Approach for Placing Option Pages
- Plugin with specific admin menu icon
- How to avoid creating first submenu page that is same as menu page?
- OOP Plugin and Menu – Call to undefined function register_setting()
- Global State During an Admin Post
- Howto: Use Custom Post Types as Submenu Items in Admin
- Sub Menu content is being duplicated
- Show/Hide ‘add new user’ custom fields in wordpress admin panel by click another field
- Bootstrap doesn’t work on admin menu page-How to override wp-admin style?
- is it recommended to use WP_List_Table?
- Plugin sub-menu pages recommended structure and links
- Is there documentation reference for forms in menu and setting pages?
- Creating Admin Plugin – Content of a page is displayed at global scope as well
- Silently register plugin pages
- WordPress theme options Menu
- Print Dashboard submenu name and filename
- Issue on Setting $icon_url Parameter on WP add_menu_page()
- I am trying to make a page in the admin section similar to the appearance of the Profile page for users
- Unable to get a simple plugin admin page to work
- Disable Auto-Expanding Menu in WordPress Admin Menus
- in_array function Problem
- Use options to control jQuery plugin
- Restrict certain actions to plugin-specific admin menu pages only
- Proper way to create an administration page without adding it to the menu
- Pause plugin option page until all data manipulation is complete
- How to add text editor in plugin menu?
- How to make an admin plugin menu page go full screen?
- How to add admin.php to WP Admin Menu Link
- add menu page in loop menu order
- Convert each new line in the textfield as a new value in an array
- How put the correct URL to sub-menu plugin?
- Developing a plugin where users can edit entries saved in database
- Add Admin menus or submenus depending on conditions
- Add a description/hint field in the admin page of a plugin
- Forcing ALL plugin Admin menus into a separate menu
- Link to a admin submenu item using a custom link
- Plugin admin list pages as submenu
- Change Admin menu placement using hooks
- Menu_slug used for creating options page
- How to design WooCommerce-like admin tabs for plugin settings page?
- Is it possible to add Custom Dashboard Widgets to Custom Admin Menu Page?
- Show Admin Menu
- Create a menu and a submenu
- Is there a way to decide from init whether we are on a certain backend page?
- adding an options menu that allows saving multiple sets of said options
- WordPress custom url without using any of the custom tags given
- Counter not working correctly
- Generate Static Page to Show Search Results/Detail for API
- User meta query using Wildcard
- How do I use a plugin to swap out the template file for a custom post type?
- WordPress with React: Saving and Using Data Collected with fetch
- use a (Polymer) web component within a plugin (or theme)?
- Custom Post not Deleting on Uninstall
- Scripts/styles not loading on cloned WP Site when logged in
- how to add security questions on wp-registration page and validate it
- Multiple instances of $opt_name in redux framework
- Don’t print customizer styles when no setting has been used
- Initializing rest endpoint issue
- Using AJAX to submit and return data inside the WordPress Plugin Boiler Plate framework
- Append php file to footer
- Integrate separate web app inside wordpress [closed]
- How to avoid conflict if a plugin already have included open library?
- Can’t get wpColorPicker to work in a widget
- WordPress OOP get current user question?
- Plugin Activation Causes wp_register errors
- Load custom translation in custom plugin fails
- Add quick edit functionnality to plugin table
- How to filter an action inside class in MemberPress plugin?
- AJAX call of function containing javascript which is not loaded (Plugin development)
- XMLHttpRequest to open PHP file responds with Missing Page
- Including content into an add_shortcode() function
- Get the current post/page URL with plain permalinks
- Hide / show settings field based on other field’s value
- How to integrate plugins into block editor
- Group By in a Metaquery
- Pre-populated WooCommerce checkout fields: dropdown fields issue
- Using the same class across multiple functions
- Hide post by ‘post_category’
- jQuery dependent script ignores $in_footer bool and doesn’t work in header
- Woocommerce Product finder feature on home page
- How can I measure CPU and RAM used by my theme or plugin
- How do I show the HTML descrption in wordpress photo gallery for my individual gallery pages?