web-dev-qa-db-fra.com

Génération d’utilisateur (s) avec l’API de paramètres

J'essaie de créer un plugin qui générera des utilisateurs. Je suis assez nouveau sur Wordpress et mon PHP est ehhhh. L'idée est que le plug-in génère plusieurs utilisateurs lorsqu'il est terminé. Pour l'instant, j'essaie simplement de le générer. Mais j'ai des difficultés à le faire, des idées?

Une fois que je clique sur Soumettre, je reçois un "Paramètres enregistrés". Donc, je pense que cela signifie que le formulaire a été traité mais qu'aucun utilisateur n'apparaît dans la base de données. J'imagine que je ne reçois pas les informations sous la forme ou que je n'exécute pas correctement ma fonction.

<?php
function sl_add_options_page() {
    // Add new page under the "Settings tab
    add_options_page(
        __( 'User Options' ),
        __( 'User Options' ),
        'manage_options',
        'user_options_page',
        'sl_render_options_page'
    );
}

add_action( 'admin_menu', 'sl_add_options_page' );

function sl_render_options_page() {
    ?>
    <div class="wrap">
        <h2><?php _e( 'Content & User Generator Options' ); ?></h2>
        <form action="options.php" method="post">
            <?php settings_fields( 'num_users' ); ?>
            <?php do_settings_sections( 'user_options_page' ); ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="<?php _e( 'Submit' ); ?>">
            </p>
        </form>
    </div>
    <?php
}

function sl_add_setting() {
    // Register a binary value called "pimple_disable"
    register_setting(
        'num_users',
        'num_users',
        'absint'
    );

    // Add the settings section to hold the interface
    add_settings_section(
        'user_main_settings',
        __( 'User Controls' ),
        'sl_render_main_settings_section',
        'user_options_page'
    );

    // Add the settings field to define the interface
    add_settings_field(
        'user_main_settings_field',
        __( 'How Many users' ),
        'sl_render_users_input',
        'user_options_page',
        'user_main_settings',
        'sl_wp_create_user'
    );
}

add_action( 'admin_init', 'sl_add_setting' );

function sl_wp_create_user($username, $password, $email) {
    $num_users = intval( $_GET['num_users'] );
    $username = 'Testing';
    $email = '[email protected]';
    $password = wp_generate_password( 12, false );

    for( $j = 0; $j < $num_users; $j++ ) { 

        $user_login = esc_sql( $username );
        $user_email = esc_sql( $email    );
        $user_pass = $password;

        $userdata = compact('user_login', 'user_email', 'user_pass');
        return wp_insert_user($userdata);
    }

    echo '<div id="message" class="updated fade"><p><strong>' . $num_users . ' Users created</strong></p></div>';
}

function sl_render_main_settings_section() {
    echo '<p>Main settings for the Content and User Generator plugin.</p>';
}

function sl_render_users_input() {
    echo '<input id="num_users" name="num_users" type="input" value=""  />';
}
2
Moto824BRO

Vous utilisez add_settings_field faux: la fonction sl_wp_create_user est passée en tant que $args (et vous n'avez probablement pas besoin d'arguments), et il devrait s'agir de l'assainir rappel pour register_settings.

Faites la saisie comme:

function sl_render_users_input() {
    echo '<input id="num_users[value]" name="num_users[value]" type="input" value=""  />';
}

Et la fonction de désinfection:

function sl_wp_create_user( $input ) {
    if( isset( $input['value'] ) ) {
        // do your thing
    }
}
1
brasofilo