How to add login logout item in anywhere in any WordPress menu

Easily add a dynamic menu item anywhere in any WordPress Menu using the code below.

/**
 * Inject Menu item anywhere
 */

add_filter('wp_nav_menu_items', 'myf_menu_items', 10, 2);
function myf_menu_items($items, $args) {
	//var_dump($args);

	if ($args->menu->name == 'Footer Menu') {

		$array = explode("<li ", $items);

		unset($array[0]);

		// echo "<pre>";
		// print_r($array);
		// echo "</pre>";

		$items = "";
		$insert_x = 1; // Enter insertion point here

		for ($i = 0; $i < (count($array) + 1); $i++) {
			//print_r($items[i]);

			if ($i == ($insert_x + 1)) {
				if (is_user_logged_in()) {
					$items .= '<li id="menu-item-logout" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-logout"><a class="menu-link" href="' . wp_logout_url() . '">Logout</a></li>';
				} else {
					$items .= '<li id="menu-item-login" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-login"><a class="menu-link" href="' . wp_login_url() . '">Login</a></li>';
				}
			}

			$items .= '<li ' . $array[$i] . '</li>';
		}

	}

	return $items;
}

Leave a Comment