用于register_form的Wordpress的add_action无法正常工作

时间:2014-01-27 23:23:10

标签: wordpress

根据我在网上看到的内容,以下代码应该在Wordpress的用户注册表单中添加“城市”字段。

事情是,它似乎不起作用 - 我没有在用户表单中看到额外的“城市”字段。

任何帮助表示感谢。

add_action( 'register_form', 'extended_register_form' );
add_filter('registration_errors', 'myplugin_registration_errors', 10, 3);
add_action('user_register', 'myplugin_user_register');

    function extended_register_form() {
$city = ( isset( $_POST['city'] ) ) ? $_POST['city']: '';
?>
<p>
    <label for="city">City<br />
    <input type="text" name="city" id="city" class="input" value="<?php echo esc_attr(stripslashes($city)); ?>" size="25" /></label>
</p>
<?
}
function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {
    if ( empty( $_POST['city'] ) )
        $errors->add( 'city_error', __('<strong>ERROR</strong>: You must include a city.') );
    return $errors;
}
function myplugin_user_register ($user_id) {
    if ( isset( $_POST['city'] ) )
        update_user_meta($user_id, 'city', $_POST['city']);
}

2 个答案:

答案 0 :(得分:3)

自Wordpress 3.0.0以来,要调用的操作是“signup_extra_fields”而不是“register_form”,所以你应该使用:

add_action( 'signup_extra_fields', 'extended_register_form' );

答案 1 :(得分:0)

我尝试了您的代码并且效果很好,也许是因为第12行中的<? ...请尝试<?php而不是......

你在哪里添加了代码?作为插件或主题的functions.php?