ajouter plusieurs utilisateurs (Créer un compte)

  • Statut : non résolu
12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Messages
  • #459851
    enseignement
    Participant
    Chevalier WordPress
    102 contributions

    Hello,

    J’aimerais que les créateurs de blogs puissent ajouter directement des contributeurs en évitant le côté lourd de l’inscription préalable sur la plateforme de blogs, et donc que l’administrateur d’un blog puisse ajouter des utilisateurs directement à partir de l’interface.
    J’ai déjà vu ça sur plusieurs plateformes wpmu (lewebpedagogique, edublogs, …) mais je ne trouve pas le plugin qui fait ça …

    Merci de votre aide.

    #631450
    enseignement
    Participant
    Chevalier WordPress
    102 contributions

    Personne sur le coup ?

    #631451
    Soph
    Membre
    Chevalier WordPress
    149 contributions

    C’est pas le truc qui dois être bien difficile à faire, et cela m’intéresse également, je regarderais donc mais heu dans quelques/plusieurs jours si personne ne te trouve ca.

    #631452
    enseignement
    Participant
    Chevalier WordPress
    102 contributions

    Salut Soph ..
    En fait, si tu veux une base, il y a déjà celui-ci.

    http://www.wordpress-fr.net/support/sujet-10526-plugin-ajout-utilisateur

    #631453
    ourale
    Membre
    Initié WordPress
    34 contributions

    J’avais les mêmes besoins. Je n’ai pas utilisé de plugin (cependant c’est peut-être transférable mais je n’en ai pas vraiment les compétences et le temps).
    – Je suis parti du postulat suivant, wordpress et wordpress mu restent très proches l’un de l’autre pour le code. Or il est possible de créer des utilisateurs dans wordpress. D’ailleurs, plusieurs utilisateurs peuvent avoir le même courriel, ce qui était une nécessité pour moi puisque des élèves publient sur les blogs avec l’encadrement d’enseignants. Or ces élèves n’ont souvent pas de courriel personnel mais un courriel classe.
    Je ne sais si cette manip est valable pour wordpress mu 1.5.1 mais sans doute (si je viens de la tester) :
    1. télécharger wordpress 1.5.1. Cela permet de comparer les fichiers avec winmerge par exemple.
    2. dans wp-admin/includes/schema ajouter le droit de créer des utilisateurs aux administrateurs des blogs = $role->add_cap(‘create_users’); (à partir de la ligne 365)
    3. Remplacer le fichier user.php dans wp-admin par le code ci-joint :

    <?php
    require_once('admin.php');
    require_once( ABSPATH . WPINC . '/registration.php');

    if ( !current_user_can('edit_users') )
    wp_die(__('Cheatin’ uh?'));

    $title = __('Users');
    $parent_file = 'users.php';

    $action = $_REQUEST['action'];
    $update = '';

    if ( empty($action) ) {
    if ( isset($_GET['removeit']) )
    $action = 'removeuser';
    elseif ( isset($_GET['changeit']) && !empty($_GET['new_role']) )
    $action = 'promote';
    }

    if ( empty($_REQUEST) ) {
    $referer = '’;
    } elseif ( isset($_REQUEST[‘wp_http_referer’]) ) {
    $redirect = remove_query_arg(array(‘wp_http_referer’, ‘updated’, ‘delete_count’), stripslashes($_REQUEST[‘wp_http_referer’]));
    $referer =  »;
    } else {
    $redirect = ‘users.php’;
    }

    switch ($action) {

    case ‘promote’:
    check_admin_referer(‘bulk-users’);

    if (empty($_REQUEST[‘users’])) {
    wp_redirect($redirect);
    exit();
    }

    if ( !current_user_can(‘edit_users’) )
    wp_die(__(‘You can’t edit users.’));

    $userids = $_REQUEST[‘users’];
    $update = ‘promote’;
    foreach($userids as $id) {
    if ( ! current_user_can(‘edit_user’, $id) )
    wp_die(__(‘You can’t edit that user.’));
    // The new role of the current user must also have edit_users caps
    if($id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST[‘new_role’]]->has_cap(‘edit_users’)) {
    $update = ‘err_admin_role’;
    continue;
    }

    $user = new WP_User($id);
    $user->set_role($_REQUEST[‘new_role’]);
    }

    wp_redirect(add_query_arg(‘update’, $update, $redirect));
    exit();

    break;

    case ‘dodelete’:
    wp_die(__(‘This function is disabled.’));
    check_admin_referer(‘delete-users’);

    if ( empty($_REQUEST[‘users’]) ) {
    wp_redirect($redirect);
    exit();
    }

    if ( !current_user_can(‘delete_users’) )
    wp_die(__(‘You can’t delete users.’));

    $userids = $_REQUEST[‘users’];
    $update = ‘del’;
    $delete_count = 0;

    foreach ( (array) $userids as $id) {
    if ( ! current_user_can(‘delete_user’, $id) )
    wp_die(__(‘You can’t delete that user.’));

    if($id == $current_user->ID) {
    $update = ‘err_admin_del’;
    continue;
    }
    switch($_REQUEST[‘delete_option’]) {
    case ‘delete’:
    wp_delete_user($id);
    break;
    case ‘reassign’:
    wp_delete_user($id, $_REQUEST[‘reassign_user’]);
    break;
    }
    ++$delete_count;
    }

    $redirect = add_query_arg( array(‘delete_count’ => $delete_count, ‘update’ => $update), $redirect);
    wp_redirect($redirect);
    exit();

    break;

    case ‘delete’:
    wp_die(__(‘This function is disabled.’));
    check_admin_referer(‘bulk-users’);

    if ( empty($_REQUEST[‘users’]) ) {
    wp_redirect($redirect);
    exit();
    }

    if ( !current_user_can(‘delete_users’) )
    $errors = new WP_Error(‘edit_users’, __(‘You can’t delete users.’));

    $userids = $_REQUEST[‘users’];

    include (‘admin-header.php’);
    ?>
    <form action="" method="post" name="updateusers" id="updateusers">



    <div class="wrap">
    <h2></h2>
    <p></p>
    <ul>
    ID ) {
    echo « <li> » . sprintf(__(‘ID #%1s: %2s <strong>The current user will not be deleted.</strong>‘), $id, $user->user_login) . « </li>n »;
    } else {
    echo « <li> » . sprintf(__(‘ID #%1s: %2s’), $id, $user->user_login) . « </li>n »;
    $go_delete = true;
    }
    }
    $all_logins = $wpdb->get_results(« SELECT ID, user_login FROM $wpdb->users, $wpdb->usermeta WHERE $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = ‘ ».$wpdb->prefix. »capabilities’ ORDER BY user_login »);
    $user_dropdown =  »;
    foreach ( (array) $all_logins as $login )
    if ( $login->ID == $current_user->ID || !in_array($login->ID, $userids) )
    $user_dropdown .= « ID} »>{$login->user_login} »;
    $user_dropdown .=  »;
    ?>
    </ul>

    <p></p>
    <ul>
    <li><label>
    </label></li>
    <li>
    <?php echo '<label for="delete_option1">‘.__(‘Attribute all posts and links to:’). »</label> $user_dropdown »; ?></li>
    </ul>

    <p class="submit"><input type="submit" name="submit" value=" » class= »button-secondary » /></p>

    <p></p>

    </div>
    </form>
    id) {
    $update = ‘err_admin_remove’;
    continue;
    }
    remove_user_from_blog($id);
    }

    wp_redirect(‘users.php?update=’ . $update);

    break;

    case ‘removeuser’:

    check_admin_referer(‘bulk-users’);

    if (empty($_REQUEST[‘users’])) {
    wp_redirect(‘users.php’);
    }

    if ( !current_user_can(‘edit_users’) )
    $error = new WP_Error(‘edit_users’, __(‘You can’t remove users.’));

    $userids = $_REQUEST[‘users’];

    include (‘admin-header.php’);
    ?>
    <form action="" method="post" name="updateusers" id="updateusers">

    <div class="wrap">
    <h2></h2>
    <p></p>
    <ul>
    id) {
    echo « <li> » . sprintf(__(‘ID #%1s: %2s <strong>The current user will not be removed.</strong>‘), $id, $user->user_login) . « </li>n »;
    } else {
    echo « <li> » . sprintf(__(‘ID #%1s: %2s’), $id, $user->user_login) . « </li>n »;
    $go_remove = true;
    }
    }
    ?>


    <p class="submit"><input type="submit" name="submit" value=" » /></p>

    <p></p>

    </div>
    </form>
    urlencode($new_user_login), ‘update’ => $update), $redirect );
    wp_redirect( $redirect . ‘#user-‘ . $user_id );
    die();
    }

    case ‘addexistinguser’:
    check_admin_referer(‘add-user’);
    if ( !current_user_can(‘edit_users’) )
    die(__(‘You can’t edit users.’));

    $new_user_email = wp_specialchars(trim($_REQUEST[‘newuser’]));
    /* checking that username has been typed */
    if ( !empty($new_user_email) ) {
    if ( $user_id = email_exists( $new_user_email ) ) {
    $username = $wpdb->get_var( « SELECT user_login FROM {$wpdb->users} WHERE ID=’$user_id' » );
    if( ($username != null && is_site_admin( $username ) == false ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) {
    $location = ‘users.php?update=add_existing’;
    } else {
    add_user_to_blog( », $user_id, $_REQUEST[ ‘new_role’ ]);
    do_action( « added_existing_user », $user_id );
    $location = ‘users.php?update=add’;
    }
    wp_redirect(« $location »);
    die();
    } else {
    wp_redirect(‘users.php?update=notfound’ );
    die();
    }
    }
    wp_redirect(‘users.php’);
    die();
    break;

    default:

    if ( !empty($_GET[‘_wp_http_referer’]) ) {
    wp_redirect(remove_query_arg(array(‘_wp_http_referer’, ‘_wpnonce’), stripslashes($_SERVER[‘REQUEST_URI’])));
    exit;
    }

    wp_enqueue_script(‘admin-users’);
    wp_enqueue_script(‘admin-forms’);

    include(‘admin-header.php’);

    // Query the users
    $wp_user_search = new WP_User_Search($_GET[‘usersearch’], $_GET[‘userspage’], $_GET[‘role’]);

    if ( isset($_GET[‘update’]) ) :
    switch($_GET[‘update’]) {
    case ‘del’:
    case ‘del_many’:
    ?>

    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="error"><p></p></div>
    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="error"><p></p></div>
    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="error"><p></p></div>
    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="updated fade"><p></p></div>

    <div id="message" class="updated fade"><p></p></div>



    <div class="error">
    <ul>
    get_error_messages() as $message )
    echo « <li>$message</li>« ;
    ?>
    </ul>
    </div>


    <div class="wrap">
    <form id="posts-filter" action="" method="get">
    is_search() ) : ?>
    <h2>search_term)); ?></h2>

    <h2></h2>


    <ul class="subsubsub">
    meta_value);
    foreach ( (array) $b_roles as $b_role => $val ) {
    if ( !isset($avail_roles[$b_role]) )
    $avail_roles[$b_role] = 0;
    $avail_roles[$b_role]++;
    }
    }
    unset($users_of_blog);

    $current_role = false;
    $class = empty($_GET[‘role’]) ? ‘ class= »current »‘ :  »;
    $role_links[] = « <li><a> » . __(‘All Users’) . « </a>« ;
    foreach ( $wp_roles->get_names() as $role => $name ) {
    if ( !isset($avail_roles[$role]) )
    continue;

    $class =  »;

    if ( $role == $_GET[‘role’] ) {
    $current_role = $_GET[‘role’];
    $class = ‘ class= »current »‘;
    }

    $name = translate_with_context($name);
    $name = sprintf(_c(‘%1$s (%2$s)|user role with count’), $name, $avail_roles[$role]);
    $role_links[] = « <li><a> » . $name . ‘</a>‘;
    }
    echo implode(‘ |</li>‘, $role_links) . ‘</li>‘;
    unset($role_links);
    ?>
    </ul>
    <p id="post-search">
    <input type="text" id="post-search-input" name="usersearch" value="search_term); ?> » />
    <input type="submit" value=" » class= »button » />
    </p>

    <div class="tablenav">

    results_are_paged() ) : ?>
    <div class="tablenav-pages">page_links(); ?></div>


    <div class="alignleft">
    <input type="submit" value=" » name= »removeit » class= »button-secondary delete » />
     »
    <input type="submit" value=" » name= »changeit » class= »button-secondary » />

    </div>

    <br class="clear" />
    </div>

    <br class="clear" />

    search_errors ) ) : ?>
    <div class="error">
    <ul>
    search_errors->get_error_messages() as $message )
    echo « <li>$message</li>« ;
    ?>
    </ul>
    </div>



    get_results() ) : ?>

    is_search() ) : ?>
    <p><a href="users.php"></a></p>


    <table class="widefat">
    <thead>
    <tr class="thead">
    <th scope="col" class="check-column"> </th>
    <th></th>
    <th></th>
    <th></th>
    <th></th>
    <th class="num"></th>
    </tr>
    </thead>
    <tbody id="users" class="list:user user-list">
    get_results() as $userid ) {
    $user_object = new WP_User($userid);
    $roles = $user_object->roles;
    $role = array_shift($roles);

    $style = ( ‘ class= »alternate »‘ == $style ) ?  » : ‘ class= »alternate »‘;
    echo « nt » . user_row($user_object, $style, $role);
    }
    ?>
    </tbody>
    </table>

    <div class="tablenav">

    results_are_paged() ) : ?>
    <div class="tablenav-pages">page_links(); ?></div>


    <br class="clear" />
    </div>

    </form>


    </div>

    ‘user_login’, ‘first_name’ => ‘user_firstname’, ‘last_name’ => ‘user_lastname’, ’email’ => ‘user_email’, ‘url’ => ‘user_uri’, ‘role’ => ‘user_role’) as $formpost => $var ) {
    $var = ‘new_’ . $var;
    $$var = attribute_escape(stripslashes($_REQUEST[$formpost]));
    }
    unset($name);
    }
    ?>

    <br class="clear" />


    <div class="wrap">
    <h2></h2>
    <div class="narrow">
    <form action="" method="post" name="adduser" id="adduser">


    <p></p>
    <table>
    <tr><th scope="row"> </th><td></td></tr>
    <tr>
    <th scope="row"></th>
    <td>role_names as $role => $name) {
    $selected =  »;
    if( $role == ‘subscriber’ )
    $selected = ‘selected= »selected »‘;
    echo « {$name} »;
    }
    ?></td>
    </tr>
    </table>
    <p class="submit">

    <input name="adduser" type="submit" id="addusersub" value=" » />
    </p>
    </div>
    </form>


    <div class="error">
    get_error_messages() as $message )
    echo « <p>$message</p>« ;
    ?>
    </div>

    <div id="ajax-response">

    <input name="user_login" type="text" id="user_login" value=" » />
    <input name="first_name" type="text" id="first_name" value=" » />
    <input name="last_name" type="text" id="last_name" value=" » />
    <input name="email" type="text" id="email" value=" » />
    <input name="url" type="text" id="url" value=" » />

    <input name="adduser" type="submit" id="addusersub" value=" » />

    Il restera ensuite à reconfigurer le fichier .po à l’aide de poedit (catalogue, configuration, mettre le chemin du dossier contenant wordpress mu puis mettre à jour les sources et traduire les nouvelles chaînes de caractères).
    Et voilà mais c’est une méthode qui nécessite de tester les fichiers avant chaque mise à jour. L’idéal serait un plugin.

    #631454
    enseignement
    Participant
    Chevalier WordPress
    102 contributions

    Sans indiscrétion, tu l’as fait pour quel site ?

    #631455
    ourale
    Membre
    Initié WordPress
    34 contributions

    Pour une plateforme de blogs pédagogiques d’une académie française

    #631456
    enseignement
    Participant
    Chevalier WordPress
    102 contributions

    OK. Euh tu as fait d’autres changements qui pourraient être intéressants ?
    Ma plateforme étant une plateforme de blogs pédagogiques … ça m’intéresse 😉

    Le code que tu donnes là, c’est une adaptation de 1.5.1 ou de 1.3.3 ?

    #631457
    ourale
    Membre
    Initié WordPress
    34 contributions

    Seule la dernière partie du code est légèrement modifiée (j’ai repris ni plus ni moins le formulaire de wordpress 2.3.3 mais je suis persuadé que cela fonctionne avec le formulaire de wordpress 2.5.1.
    C’est la seule grosse modification que j’ai faite à part l’utilisation du plugin Role manager pour permettre au statut de contributeur de joindre des fichiers aux articles. Par défaut, ce n’est pas le cas. Or le statut contributeur est l’idéal pour des élèves puisqu’ils soumettent leur article à la validation de l’enseignant, administrateur du blog.

    #631458
    enseignement
    Participant
    Chevalier WordPress
    102 contributions

    Est-ce qu’il y a toujours la possibilité d’ajouter des utilisateurs normaux avec ton code ?
    Est-ce que tu peux me l’envoyer par mail ou par mp ?

    Merci de ta contribution.

    #631459
    ourale
    Membre
    Initié WordPress
    34 contributions

    En fait le code ci-dessus ajoute simplement un formulaire dans utilisateurs qui permet à l’administrateur de créer ses propres utilisateurs tout en conservant la possibilité de récupérer les utilisateurs normaux via leur courriel.
    Il te suffit de copier le code que j’ai joint au dessus dans notepad ++ ou le blocnote puis d’appeler le fichier users.php.
    Pense aussi à rajouter le droit de créer des utilisateurs dans schema.php
    Teste ensuite en local (avec wamp par exemple) pour voir ce que cela donne.
    Si cela te convient, tu peux passer en production mais pas avant.

    #631460
    El-Cherubin
    Participant
    Chevalier WordPress
    142 contributions

    merci pour ce bout de code 🙂

12 sujets de 1 à 12 (sur un total de 12)
  • Vous devez être connecté pour répondre à ce sujet.