WordPress的user_register钩子不执行? [英] Wordpress user_register hook not executing?

查看:142
本文介绍了WordPress的user_register钩子不执行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为自己的目的创建Worldpress插件. 我想在注册表单中添加一些其他字段(名字,姓氏和电话号码)

I'm creating a Worldpress Plugin for my own purpose. I'd like to add some additional fields to the registration form (First Name, Last Name and Phone Number)

<?php 
function __construct() {
    ....
    add_action( 'register_form', array($this, 'eddpremium_register_additonalfields' ));
    add_filter( 'registration_errors', array($this, 'eddpremium_register_errors'), 10, 3 );
    add_action( 'user_register', array($this, 'eddpremium_register_fields_save'), 10, 1 );
    ....

    add_action( 'user_contactmethods', array($this, 'eddpremium_mobilenumber_setting' ));
}

register_form挂钩以及registration_errors过滤器也可以正常工作,但user_register则不能.似乎应该保存附加字段的函数不会被触发...

The register_form hook as well the registration_errors filter are working fine, but user_register doesn't. It seems, that the function, which should save the additonal fields, doesn't get fired...

function eddpremium_register_fields_save($user_id) {

    $first_name = $_POST["first_name"];
    $last_name = $_POST["last_name"];
    $mobile_phone = $_POST["mobile_phone"];

    // No need to check, variables get checked in registration_errors


    update_user_meta($user_id, "first_name", $first_name);
    update_user_meta($user_id, "last_name", $last_name);
    update_user_meta($user_id, "mobile_phone", $mobile_phone);

    //$username = get_userdata($user_id)->user_login;

}

扼杀,在成功注册user_contactmethods后被解雇. 如何使user_register挂钩正常工作?

Strangley, after the successful registration user_contactmethods gets fired. How can I get the user_register hook to work properly?

(此功能在注册后不应该被触发,但是会被触发)

(This function shouldn't be fired after registration, however it get's fired)

此时不应执行的功能代码:

Code of the function which shouldn't get executed at that point:

function eddpremium_mobilenumber_setting() {

    $userid = $_GET["user_id"]; // Zu bearbeitende Nutzerid
    if(empty($userid))  // wenn aktueller Nutzer eigenes Profil bearbeitet
        $userid = get_current_user_id();

        $mobile_phone_verified = get_the_author_meta('mobile_phone_verified', $userid);

    ?>

        <tr>
            <th><label for="mobile_phone">Handynummer:</label></th>
            <td>
                <input id="mobile_phone" name="mobile_phone" autocomplete="off" <?php if(empty($mobile_phone_verified) AND !current_user_can( 'manage_options' )) echo 'disabled="disabled"'; ?> placeholder="0791112233" type="tel" value="<?php $mobile_phone = get_the_author_meta( 'mobile_phone', $userid ); 
                        echo $mobile_phone ? $mobile_phone : '';?>" />
                 <?php if(empty($mobile_phone_verified)) {?>    <a style='color:red;'>Verifikation erforderlich</a>   <?php } else {?>
                    <a style='color:green;'>Nummer verifiziert</a>
                    <?php }   ?>

            </td>


        </tr>

    <?php

}

推荐答案

user_register并非每次都触发,在更新现有配置文件时,会触发profile_update ...

user_register doesn't fire every time, on updating existing profile, profile_update is fired...

只需将您的回调添加到这两个操作中,以便它也可以在更新时触发;)

Just add your callback to both actions, so that it fires on updating too ;)

add_action( 'user_register', array($this, 'eddpremium_register_fields_save'), 10, 1 );
add_action( 'profile_update', array($this, 'eddpremium_register_fields_save'), 10, 1 );


更新

WP检查是否将ID(用户ID)与表单数据一起传递,如果是,则触发profile_update钩子.否则user_register是.


UPDATE

WP checks if ID (user ID) is passed with form data, if it is, profile_update hook is fired. Otherwise user_register is.

这篇关于WordPress的user_register钩子不执行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆