Drupal - How can I flag content programmatically?

Here's how to flag or unflag an entity programmatically, using the Flag service.

$flag_id = 'bookmark';

$flag_service = \Drupal::service('flag');
$flag = $flag_service->getFlagById($flag_id);

// Flag an entity with a specific flag.
$flag_service->flag($flag, $entity);

// Unflag an entity with a specific flag.
$flag_service->unflag($flag, $entity);

Flag for a certain user you will have to do :

$account = \Drupal::currentUser(); // or load a specific user
$flag_service = \Drupal::service('flag');

$flag = $flag_service->getFlagById('bookmark'); // replace by flag machine name

// check if already flagged
$flagging = $flag_service->getFlagging($flag, $media, $account);
if (!$flagging) {
  $flag_service->flag($flag, $media, $account);
}
else {
  $flag_service->unflag($flag, $media, $account);
}

Tags:

Flags

8