我在电子商务网站上使用woocommerce。我想在Login Regiser页面中再添加一个字段。在此页面上有三个注册字段(电子邮件,密码和重新输入密码),我想再添加一个电话号码字段。
任何人都可以帮助我吗?提前致谢 http://wordpress.org/plugins/woocommerce/
答案 0 :(得分:7)
如果其他人对如何在登录/注册/任何其他帐户表单中添加其他字段感到好奇。由于WooCommerce已将这些内容添加到模板文件夹中,因此您可以轻松实现此目的。您所要做的就是从插件> woocommerce>模板> myaccount 中复制粘贴您需要修改的表单,然后将其放入您自己的主题中。之后,您可以添加额外字段并添加任何其他功能,以使其使用http://docs.woothemes.com/document/hooks/
希望这对任何一直坚持这一点的人有所帮助。
答案 1 :(得分:3)
我使用“Register Plus Redux”插件并使用“billing_phone”数据库密钥映射到用户数据库中的正确字段。您还可以让用户添加其他信息,例如“'billing_address_1”和其他任何信息。 最好的祝福 马克
答案 2 :(得分:1)
旧帖子,但是此答案处理了所询问的问题,并提供了WordPress Codex的直接答案
我修改了链接页面中的代码,以与验证页面上显示的邮政编码示例内联。代码中的每个页面都使用不同的示例,我只是使它们都相同。
“ register_form”操作挂钩用于自定义内置的WordPress注册表单。
自定义注册时,与“ registration_errors”(用于验证)和“ register_post”(保存额外数据)结合使用。
WordPress MS注意:对于Wordpress MS(多站点),请使用“ signup_header”操作将用户重定向到注册之外。 (强调我,花了我一段时间才意识到这个)
此示例演示了如何向注册表单添加新字段。请记住,这不会自动保存。您仍然需要设置验证规则并手动处理其他表单字段的保存。
add_action( 'register_form', 'myplugin_add_registration_fields' );
function myplugin_add_registration_fields() {
//Get and set any values already sent
$zipcode = ( isset( $_POST['zipcode'] ) ) ? $_POST['zipcode'] : '';
?>
<p>
<label for="user_extra"><?php _e( 'Extra Field', 'myplugin_textdomain' ) ?><br />
<input type="text" name="user_extra" id="user_extra" class="input" value="<?php echo esc_attr( stripslashes( $zipcode ) ); ?>" size="25" /></label>
</p>
<?php
}
链接:https://codex.wordpress.org/Plugin_API/Action_Reference/login_form
(显然)您需要验证用户输入,并应通过registration_errors
过滤器挂钩运行该输入。请注意,$errors
变量可能已经被注册过程中的其他错误填充。如示例中所示,您可以将错误添加到其中已包含的错误中。
function myplugin_check_fields( $errors, $sanitized_user_login, $user_email ) {
$errors->add( 'demo_error', __( '<strong>ERROR</strong>: This is a demo error.', 'my_textdomain' ) );
return $errors;
}
add_filter( 'registration_errors', 'myplugin_check_fields', 10, 3 );
(下一部分专门讨论自定义字段的验证)
假设您要验证已使用register_form钩子创建的邮政编码字段,则可以这样验证该字段:
function myplugin_check_fields( $errors, $sanitized_user_login, $user_email ) {
if ( ! preg_match('/[0-9]{5}/', $_POST['zipcode'] ) ) {
$errors->add( 'zipcode_error', __( '<strong>ERROR</strong>: Invalid Zip.', 'my_textdomain' ) );
}
return $errors;
}
add_filter( 'registration_errors', 'myplugin_check_fields', 10, 3 );
链接:https://codex.wordpress.org/Plugin_API/Filter_Reference/registration_errors
add_action( 'user_register', 'myplugin_registration_save', 10, 1 );
function myplugin_registration_save( $user_id ) {
if ( isset( $_POST['zipcode'] ) )
update_user_meta($user_id, 'zipcode', $_POST['zipcode']);
}
链接:https://codex.wordpress.org/Plugin_API/Action_Reference/user_register
在所有这些操作的结尾,我最终遇到了一个教程来完成此操作。在此示例中,他们添加了一个First Name
字段:
//1. Add a new form element...
add_action( 'register_form', 'myplugin_register_form' );
function myplugin_register_form() {
$first_name = ( ! empty( $_POST['first_name'] ) ) ? sanitize_text_field( $_POST['first_name'] ) : '';
?>
<p>
<label for="first_name"><?php _e( 'First Name', 'mydomain' ) ?><br />
<input type="text" name="first_name" id="first_name" class="input" value="<?php echo esc_attr( $first_name ); ?>" size="25" /></label>
</p>
<?php
}
//2. Add validation. In this case, we make sure first_name is required.
add_filter( 'registration_errors', 'myplugin_registration_errors', 10, 3 );
function myplugin_registration_errors( $errors, $sanitized_user_login, $user_email ) {
if ( empty( $_POST['first_name'] ) || ! empty( $_POST['first_name'] ) && trim( $_POST['first_name'] ) == '' ) {
$errors->add( 'first_name_error', sprintf('<strong>%s</strong>: %s',__( 'ERROR', 'mydomain' ),__( 'You must include a first name.', 'mydomain' ) ) );
}
return $errors;
}
//3. Finally, save our extra registration user meta.
add_action( 'user_register', 'myplugin_user_register' );
function myplugin_user_register( $user_id ) {
if ( ! empty( $_POST['first_name'] ) ) {
update_user_meta( $user_id, 'first_name', sanitize_text_field( $_POST['first_name'] ) );
}
}
https://codex.wordpress.org/Customizing_the_Registration_Form