Lorsqu’un utilisateur ajoute un fichier via le Front-Office Publishing, il doit sélectionner un owner. Trois options s’offrent à nous actuellement :
- Laisser la possibilité à l’utilisateur de sélectionner lui-même le owner. Il peut alors sélectionner un groupe WordPress ou n’importe lequel utilisateur WordPress. Dans mon cas c’était inutile et inconcevable de laisser un utilisateur voir tous les autres utilisateurs de mon site WordPress
- Appliquer un owner par défaut (soit un groupe ou un utilisateur).
- Ne rien faire. Aucun owner par défaut et aucune possibilité de sélectionner le owner. Ça amène à une incapacité de continuer puisqu’il faut absolument sélectionner un owner… pratique.
Le problème, c’est que peu importe laquelle de ces options est choisie, en aucun cas les gens chez WP Customer Area ont pensé que ça pourrait être pertinent que l’utilisateur-ajouteur soit par défaut le owner.
Il faut donc le faire nous-même. Voici comment j’ai fais. Dans mon thème WordPress, j’ai ajouté un fichier template de WP Customer Area dans le but de l’écraser et d’ajouter la fonctionnalité demandée. C’est documenté ici, si vous vous demandez comment faire.
Voici donc le contenu de /wp-content/themes/montheme/customer-area/templates/post-owner-fields-readonly.template.php
:
<?php /**
* Template version: 3.0.0
* Template zone: admin|frontend
*/ ?>
<?php /** @var array $owners */ ?>
<?php /** @var string $field_prefix */ ?>
<?php /** @var string $field_group */ ?>
<?php
// For our theme, we want to add the current user as owner on top of other
// owners that could be set in the admin
// To do so, we have to keep track of the latest index of type 'usr'
$i_usr = 0;
?>
<?php foreach ($owners as $type => $ids) : ?>
<?php if (empty($ids)) continue; ?>
<?php foreach ($ids as $i => $owner_id) : ?>
<?php
if (empty($owner_id)) continue;
if($type === 'usr') $i_usr++;
?>
<input type="hidden" name="<?php echo $field_prefix . $type . '[' . $i . ']'; ?>" value="<?php echo $owner_id; ?>" />
<?php endforeach; ?>
<?php endforeach; ?>
<input type="hidden" name="<?php echo $field_prefix ?>usr[<?php echo $i_usr ?>]" value="<?php echo get_current_user_id(); ?>" />
<p class="alert alert-default">
<i class="fa fa-info-circle mr-xs"></i> <?php _e('You will automatically be set as owner.', 'cuar'); ?>
</p>
Toujours en gardant la fonctionnalité de base qui permet de sélectionner des owners par défaut (option 1 plus haut), l’utilisateur-ajouteur est toujours appliqué comme owner.
Seul défaut que vous remarquerez peut-être, c’est qu’il ne semble pas y avoir de protection/vérification sur les owners qu’on ajoute. Dans le sens où l’utilisateur-ajouteur ne devrait pas avoir la permission de sélectionner le owner. Mais en pratique, il a le droit.
Je n’ai pas vérifié, mais il semblerait que les auteurs ont appliqué la logique non-sécuritaire suivante:
Si (l'utilisateur peut sélectionner le owner):
-> afficher le sélecteur, du genre <select name="cuar_owners_usr[]"> où on peut sélectionner le user qu'on veut
Sinon
-> mettre un <input type="hidden" name="cuar_owners_usr[0]" value="2" />
C’est seulement l’affichage qui change. Le code derrière laisse, en tout temps, l’utilisateur-ajouteur mettre le owner qu’il souhaite. Ça me semblait important de le souligner. Dans mon utilisation, je dois dire que ça me simplifie la vie 😉