WordPress表单进入数据库

时间:2015-11-30 09:00:33

标签: php database wordpress forms

我正在编写一个插件,除其他外,它应该将表单中的信息插入到数据库中。但是,当我将一些数据放入表单时,没有任何内容插入到数据库中。这是我的代码:

function ol_process_shortcode(){
        return '<form method="post"><p><label for="name">Jméno:</label><input type="text" name="ol-name" id="name" /></p><p><label for="email">Email:</label><input type="text" name="ol-email" id="email" /></p><p><input type="submit" name="ol-odeslat" value="Odeslat" /></p></form>';
        if ( isset( $_POST['ol-odeslat'] ) ) {
            $name    = sanitize_text_field( $_POST["ol-name"] );
            $email   = sanitize_email( $_POST["ol-email"] );
            require_once('../../../wp-config.php');
            global $wpdb;
            $table_name = $wpdb->prefix . "xxx";
            $wpdb->insert( $table_name, array( "Name" => $_POST["ol-name"], "Email" => $_POST["ol-email"] ) );
        }
}

我做错了什么?它也正确验证了吗?我不确定“姓名”和“电子邮件”应该在最后一行引用什么。

1 个答案:

答案 0 :(得分:0)

回归需要持续。如果你先拥有它,那么之后的代码永远不会被执行。

function ol_process_shortcode(){
    if ( isset( $_POST['ol-odeslat'] ) ) {
        $name    = sanitize_text_field( $_POST["ol-name"] );
        $email   = sanitize_email( $_POST["ol-email"] );
        global $wpdb;
        $table_name = $wpdb->prefix . "xxx";
        $wpdb->insert( $table_name, array( "Name" => $_POST["ol-name"], "Email" => $_POST["ol-email"] ) );
    }
    return '<form method="post"><p><label for="name">Jméno:</label><input type="text" name="ol-name" id="name" /></p><p><label for="email">Email:</label><input type="text" name="ol-email" id="email" /></p><p><input type="submit" name="ol-odeslat" value="Odeslat" /></p></form>';
}

...还删除了包含wp-config.php,因为它已经被Wordpress加载了。