Desactiver un lien de menu

 

<?php
function desactiverLienDeMenu($id = NULL, $nid = NULL, $menu_name = 'main') {
  if (isset($id) && !empty($id)) {
    $menu_link = \Drupal::entityTypeManager()->getStorage('menu_link_content')->load($id);
  }
  if (!isset($menu_link) && isset($nid) && is_numeric($nid)) {
    $menu_link_manager = \Drupal::service('plugin.manager.menu.link');
    $result = $menu_link_manager->loadLinksByRoute('entity.node.canonical', ['node' => $nid]);
    foreach ($result as $menu_item) {
      if (is_object($menu_item)) {
        $id = $menu_item->getPluginDefinition()['metadata']['entity_id'];
        $menu_link = \Drupal::entityTypeManager()->getStorage('menu_link_content')->load($id);
      }
    }
  }

  if (isset($menu_link) && is_object($menu_link)) {
    if ($menu_link->getMenuName() == $menu_name) {
      $menu_link->set('enabled', FALSE);
      $menu_link->save();
    }
  }
}