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="" />';
}
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
}
}