diff --git a/formulaires/editer_block.php b/formulaires/editer_block.php
index a8af871f30b4fd6d16002945629f9a80f4530626..e97c65c276bdbd007d10e23b1a42d51a5855766f 100644
--- a/formulaires/editer_block.php
+++ b/formulaires/editer_block.php
@@ -78,6 +78,18 @@ function formulaires_editer_block_charger_dist($id_block = 'new', $objet = null,
 				],
 			];
 		}
+
+		// ajout du champ "ancre nommée"
+		$saisies_blocktype[] = [
+			'saisie'  => 'input',
+			'options' => [
+				'nom'         => 'ancre',
+				'label'       => _T('block:champ_ancre_label'),
+				'explication' => _T('block:champ_ancre_explication'),
+			],
+		];
+
+		// passer les saisies au formulaire
 		$valeurs['_saisies'] = saisies_inserer(
 			$saisies_blocktype,
 			[
@@ -93,6 +105,7 @@ function formulaires_editer_block_charger_dist($id_block = 'new', $objet = null,
 
 		// charger les valeurs déjà saisies
 		$valeurs_saisies = blocks_deserialize($valeurs['valeurs'] ?? null);
+		$valeurs_saisies['ancre'] = $valeurs['ancre'] ?? null;
 		include_spip('inc/saisies_lister');
 		$saisies_par_nom = saisies_lister_par_nom($saisies_blocktype);
 		foreach ($saisies_par_nom as $nom => $saisie) {
@@ -235,10 +248,10 @@ function formulaires_editer_block_traiter_dist($id_block = 'new', $objet = null,
 
 		}
 	}
-	if($retour){
+	if ($retour && (_request('ajouter') || _request('annuler'))) {
 		$retours['redirect'] = $retour;
 	}
-	$retours['redirect'] = str_replace('&', '&', $retours['redirect']);
+	$retours['redirect'] = str_replace('&', '&', $retours['redirect'] ?? '');
 
 	return $retours;
 }