Assigning input to variable

时间:2013-09-07 作者:Moto824BRO

我正在尝试创建一个插件来生成用户。我是Wordpress的新手,我的PHP是ehhhh。我早些时候得到了一些有用的帮助,但从那以后我已经做了一些改变。。。

该插件将在单击提交时生成一个用户,问题是它忽略输入字段中的任何内容,不需要它工作。即使我将$num\\u users设置为一个数字,它仍然只生成一个。。。也许我的for循环有问题?

我知道这一定是我看得太小了。

 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\'
    );
}

add_action( \'admin_init\', \'sl_add_setting\' );

function randomName() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    $name = array(); 
    $alphaLength = strlen($alphabet) - 1; 
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, $alphaLength);
        $name[] = $alphabet[$n];
    }
    return implode($name); 
}


function randomEmail() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    $email = array(); 
    $alphaLength = strlen($alphabet) - 1; 
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, $alphaLength);
        $email[] = $alphabet[$n];
    }
    return implode($email);
}

function sl_wp_create_user() {
    if( isset( $_POST[\'submit\'] ) ) {
        //$num_users = 100;
        $num_users = $_POST[\'num_users\'];
        for( $j = 0; $j <= $num_users; $j++ ) { 
        $username = randomName();
        $email = randomEmail() . \'@gmail.com\';
        $password = wp_generate_password( 12, false );

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

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

add_action( \'admin_init\', \'sl_wp_create_user\' );

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

1 个回复
SO网友:Jeff Rose

您的表单不包含您认为它包含的字段。

使用FireBug或类似工具(甚至var\\u dump($\\u POST))查看实际发布的内容。

num\\u users是一个设置组,而不是单个字段。最多值为user\\u main\\u settings字段的字段。

前面的评论也是正确的-检查$\\u POST[\'submit\'],因为你的触发器很危险。

请看一下本教程:http://ottopress.com/2009/wordpress-settings-api-tutorial/

结束

相关推荐

如何在Contact Form 7-Forms中使用其他快捷码?

我注意到任何不是联系人表单7内置短代码一部分的短代码都不起作用。例如:我试图在contact form 7中的表单元素之间使用手风琴快捷码。但是代码不起作用。如何在不编辑联系人表单7核心文件的情况下解决此问题?