我有自己的自定义注册表单,它允许人们注册除了一个小问题:复选框没有做任何事情。当我检查数据库中的meta_key字段时,它们不存在。其他一切都还可以。
当我们勾选复选框时,我正在尝试将'comps'和'newsletter'添加到meta_key字段(值为1)。我的表格如下:
<form id="form" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post">
<fieldset>
<label for="user-login">Username<br />
<input type="text" name="user_login" id="user-login" class="input" value="" size="20" tabindex="10" />
<label for="user-email">Email address<br />
<input type="text" name="user_email" id="user-email" class="input" value="" size="25" tabindex="20" />
<label for="comps">Competitions<br />
<input type="checkbox" name="comps" id="comps" class="" value="1" tabindex="30" /></label>
<label for="newsletter">Newsletter<br />
<input type="checkbox" name="newsletter" id="newsletter" class="" value="1" tabindex="40" /></label>
<input type="hidden" name="redirect_to" value="<?php echo get_settings('home'); ?>/registration-succeeded"/>
<input type="submit" name="wp-submit" class="button" value="Register Me!" tabindex="100" />
</fieldset>
我的主题的functions.php中是否需要做些什么才能让这些元字段在用户注册时进入数据库(当选中复选框时)?
提前致谢。
答案 0 :(得分:0)
我已经解决了。只需要注册这些额外的字段以供元数据使用:
function at_register_custom_fields( $user_id, $password = "", $meta = array() ) {
// custom fields
$fields = array(
'comps',
'newsletter',
);
// cleans and updates the custom fields
foreach ( $fields as $field ) {
$value = stripslashes( trim( $_POST[$field] ) ) ;
if ( ! empty( $value ) ) {
update_user_meta( $user_id, $field, $value );
}
}
}
add_action( 'user_register', 'at_register_custom_fields' );