最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

plugins - User register hook can't access form request

programmeradmin10浏览0评论

I'm trying to add a few custom field to the registration form using the code below. After registrations customs fields with keys are created but they don't have any value. I think that my $_POST['user_register_vardas'] doesn't carry any value inside.

my html field look like that:

<input type="text" name="user_register_vardas" id="user_register_vardas" placeholder="<?php esc_attr_e('Vardas','urbango-membership') ?>" value="" required />

and my function:

add_action('user_register', 'register_extra_fields');
function register_extra_fields ( $user_id, $password = "", $meta = array() )
{
    update_user_meta( $user_id, 'vardas', $_POST['user_register_vardas'],true);
    update_user_meta( $user_id, 'pavarde', $_POST['user_register_pavarde'], false );
    update_user_meta( $user_id, 'telefonas', $_POST['user_register_vardas'] );
    update_user_meta( $user_id, $_POST['user_register_vardas'], $_POST['user_register_vardas'] ); //this key is not created
}

I'm trying to add a few custom field to the registration form using the code below. After registrations customs fields with keys are created but they don't have any value. I think that my $_POST['user_register_vardas'] doesn't carry any value inside.

my html field look like that:

<input type="text" name="user_register_vardas" id="user_register_vardas" placeholder="<?php esc_attr_e('Vardas','urbango-membership') ?>" value="" required />

and my function:

add_action('user_register', 'register_extra_fields');
function register_extra_fields ( $user_id, $password = "", $meta = array() )
{
    update_user_meta( $user_id, 'vardas', $_POST['user_register_vardas'],true);
    update_user_meta( $user_id, 'pavarde', $_POST['user_register_pavarde'], false );
    update_user_meta( $user_id, 'telefonas', $_POST['user_register_vardas'] );
    update_user_meta( $user_id, $_POST['user_register_vardas'], $_POST['user_register_vardas'] ); //this key is not created
}
Share Improve this question edited Mar 23, 2019 at 2:47 Žilvinas asked Mar 23, 2019 at 2:41 ŽilvinasŽilvinas 11 bronze badge
Add a comment  | 

1 Answer 1

Reset to default 0

There are a number of issues with the user of update_user_meta() in your function.

First, you should never write the value directly from $_POST without sanitizing it first. That's a good way to open yourself up to exploits. (Note: you didn't indicate the field types, so I'm going to assume they are text input - you'll need to adjust accordingly.)

Next, the last argument of update_user_meta() (where you have "true" in the first one, and "false" in the second), is for the previous value to compare. You're registering a new user so these fields would not have an existing value. Leave this argument out.

The last field you're inputting is problematic. As written, you're using the input value as the field meta key. If it's a text field, that means the meta key could be anything the user enters. The meta key should be static and probably match up with the field name in some way (like the previous fields).

Lastly, user_register only passes the $user_id argument. Not sure where you got $password and $meta from, but these are not valid arguments for the hook.

Here's a blind attempt at correcting these issues:

add_action('user_register', 'register_extra_fields');
function register_extra_fields ( $user_id ) {
    update_user_meta( $user_id, 'vardas', sanitize_text_field( $_POST['user_register_vardas'] ) );
    update_user_meta( $user_id, 'pavarde', sanitize_text_field( $_POST['user_register_pavarde'] ) );
    update_user_meta( $user_id, 'telefonas', sanitize_text_field( $_POST['user_register_vardas'] ) );
    update_user_meta( $user_id, 'user_register_vardas', sanitize_text_field( $_POST['user_register_vardas'] ) );
}
发布评论

评论列表(0)

  1. 暂无评论