diff --git a/ecrire/base/objets.php b/ecrire/base/objets.php
index 3d5c9c11d6a595dc144c237f99177052b11171df..b22188c8b797e09158e42d588ce1ede49d4b59ea 100644
--- a/ecrire/base/objets.php
+++ b/ecrire/base/objets.php
@@ -1263,10 +1263,10 @@ function objet_test_si_publie($objet, $id_objet, $serveur = '') {
 
 
 /**
- * Cherche le contenu parent d'un contenu précis
- *
- * Permet également de gérer un parent trouvé dans une table de lien, comme :
+ * Cherche les contenus parent d'un contenu précis.
+ * Cette version permet de gérer un/des parents trouvés dans une table de lien
  *
+ * comme :
  * ```
  * $tables['spip_auteurs']['parent']  = array(
  *     'type' => 'organisation',
@@ -1278,6 +1278,11 @@ function objet_test_si_publie($objet, $id_objet, $serveur = '') {
  * );
  * ```
  *
+ * La fonction retourne un tableau de parents, chacun de la forme
+ * ['objet' => '...', 'id_objet' => X, 'table' => '...', 'champ' => '...']
+ * Si la table utilisée pour trouver le parent est une table de liens (finissant par _liens),
+ * le tableau contient en plus en entrée 'lien' qui contient les informations complètes du lien (rang, role...)
+ *
  * @api
  * @param string $objet
  *     Type de l'objet dont on cherche les parent
@@ -1361,10 +1366,11 @@ function objet_trouver_parents($objet, $id_objet, $parent_direct_seulement = fal
 			}
 
 			// On lance la requête de récupération du parent
+			$is_table_lien = (strpos($table, '_liens') !== false and substr($table, -6) === '_liens');
 			if (
 				!$condition_objet_invalide
 				and $where
-				and ($lignes = sql_allfetsel($select, $table, $where))
+				and ($lignes = sql_allfetsel( $is_table_lien ? '*' : $select, $table, $where))
 			) {
 				foreach ($lignes as $ligne) {
 					// Si le type est fixe
@@ -1385,6 +1391,9 @@ function objet_trouver_parents($objet, $id_objet, $parent_direct_seulement = fal
 							'table'    => $table,
 						);
 					}
+					if ($is_table_lien) {
+						$parent['lien'] = $ligne;
+					}
 					$parents[] = $parent;
 				}
 			}