Hi,
I’m not a developper sorry, but here is my problem (and my english is not so good, sorry for that):
I have a bricksforge pro form with a dropdown with 3 values : client , chauffeur, agency
(The user is already logged in, and it’s a client by default).
I want the current user to be able to update it’s role in wordpress.
In Pro Forms “Actions” i’ve set “Update user meta”
How can I update the column wp_capabilities with the right value based on the dropdown?
Thank you so much!
Here is the code, generated with Chatgpt for those who need, simply translate and adapt it:
function custom_update_user_meta_action( $form ) {
// Récupérer les valeurs des champs soumis
$fields = $form->get_fields();
// Récupérer la valeur du champ avec l'ID b96730
$account_type = sanitize_text_field($fields['form-field-b96730']);
// Vérifier que la valeur du champ est 'client', 'chauffeur' ou 'agence'
$valid_account_types = ['client', 'chauffeur', 'agence'];
if (in_array($account_type, $valid_account_types)) {
// Récupérer l'utilisateur connecté
$current_user = wp_get_current_user();
// Vérifier que l'utilisateur est connecté
if ($current_user->ID != 0) {
// Vérifier les capacités de l'utilisateur, par exemple si l'utilisateur peut éditer son propre profil
if (current_user_can('edit_user', $current_user->ID)) {
// Mettre à jour le rôle de l'utilisateur
$current_user->set_role($account_type);
// Mettre à jour la valeur de ox_ctf_user_level
$level_updated = update_user_meta($current_user->ID, 'ox_ctf_user_level', 0);
// Vérifier si les mises à jour ont réussi
if ($current_user->has_cap($account_type) && $level_updated) {
$form->set_result([
'action' => 'custom_update_user_meta_action',
'type' => 'success',
'message' => esc_html__('Type de compte défini', 'bricks'),
]);
} else {
$form->set_result([
'action' => 'custom_update_user_meta_action',
'type' => 'error',
'message' => esc_html__('Une erreur est survenue lors de la mise à jour du type de compte.', 'bricks'),
]);
}
} else {
$form->set_result([
'action' => 'custom_update_user_meta_action',
'type' => 'error',
'message' => esc_html__('Permissions insuffisantes.', 'bricks'),
]);
}
} else {
$form->set_result([
'action' => 'custom_update_user_meta_action',
'type' => 'error',
'message' => esc_html__('Aucun utilisateur connecté.', 'bricks'),
]);
}
} else {
$form->set_result([
'action' => 'custom_update_user_meta_action',
'type' => 'error',
'message' => esc_html__('Type de compte non valide.', 'bricks'),
]);
}
}
add_action( 'bricks/form/custom_action', 'custom_update_user_meta_action', 10, 1 );
