Programatically add menu items to the database in WordPress

Creating and editing menu items in WordPress using PHP can be a powerful way to customize and automate your website’s navigation. In this post, we will explore the steps required to programmatically create and edit menu items in WordPress.

First, it’s important to note that in order to programmatically create and edit menu items in WordPress, you will need to have a basic understanding of PHP and WordPress development.

To get started, you’ll need to use the WordPress function wp_update_nav_menu_item(). This function allows you to create new menu items or edit existing ones.

Here’s an example of how to use the wp_update_nav_menu_item() function to create a new menu item:

// Define the menu item details
$menu_item_data = array(
    'menu-item-object-id' => $page_id,
    'menu-item-object' => 'page',
    'menu-item-parent-id' => 0,
    'menu-item-position' => 1,
    'menu-item-type' => 'post_type',
    'menu-item-status' => 'publish'
);

// Create the menu item
$item_id = wp_update_nav_menu_item( $menu_id, 0, $menu_item_data );

In this example, we’re creating a new menu item that links to a page with an ID of $page_id. We’re also specifying that the menu item should be a top-level item (menu-item-parent-id = 0), and that it should be the first item in the menu (menu-item-position = 1).

To edit an existing menu item, you’ll need to first get the ID of the menu item you want to edit. You can do this using the wp_get_nav_menu_items() function.

Once you have the ID of the menu item you want to edit, you can use the wp_update_nav_menu_item() function to make changes to it. Here’s an example of how to do this:

// Get the ID of the menu item you want to edit
$menu_item_id = 123;

// Define the new menu item details
$menu_item_data = array(
    'menu-item-title' => 'New menu item title',
    'menu-item-url' => 'http://example.com',
    'menu-item-status' => 'publish'
);

// Update the menu item
wp_update_nav_menu_item( $menu_id, $menu_item_id, $menu_item_data );

In this example, we’re changing the title and URL of a menu item with an ID of $menu_item_id.

It’s important to note that these examples are simplified and meant to give you an idea of how to programmatically create and edit menu items in WordPress using PHP. There are many other options and parameters that can be used with the wp_update_nav_menu_item() function, and you may need to customize the code to suit your specific needs.