Lorsque je réponds à un commentaire dans le dossier WP dans la section "Commentaires" (edit-comments.php), je ne peux que poster la réponse en tant qu'utilisateur connecté. Est-il possible de sélectionner un certain utilisateur, comme dans la section "Ajouter un nouveau message" (post-new.php) où j'ai une liste déroulante avec tous les utilisateurs autorisés à écrire des messages?
Oui, ajoutez un champ de sélection de l'utilisateur dans le formulaire de commentaire:
add_action('comment_form_after_fields', function(){
// allow only users who can moderate comments to do this
if(!current_user_can('moderate_comments'))
return;
$user = wp_get_current_user();
wp_dropdown_users(array(
'name' => 'alt_comment_user',
'selected' => $user->ID,
));
});
Lorsque le formulaire est traité, vérifiez si un utilisateur a été sélectionné et modifiez les données de commentaire avant qu'il ne soit inséré dans la base de données:
add_filter('preprocess_comment', function($input){
if(current_user_can('moderate_comments') && isset($_POST['alt_comment_user'])){
$user = get_user_by('id', (int)$_POST['alt_comment_user']);
$my_fields = array(
'comment_author' => empty($user->display_name) ? $user->user_login : $user->display_name,
'comment_author_email' => $user->user_email,
'comment_author_url' => $user->user_url,
'user_ID' => $user->ID,
);
// escape for db input
foreach($my_fields as &$field)
$field = $GLOBALS['wpdb']->escape($field);
$input = $my_fields + $input;
}
return $input;
});
ref: wp_dropdown_users