Wordpress添加新的用户钩子

时间:2012-02-04 08:48:04

标签: wordpress hook

我想添加一些自定义字段以在Wordpress中添加新用户。我使用以下钩子:

  • show_user_profile
  • edit_user_profile

这些钩子在编辑个人资料页面上显示新的自定义字段,但我希望新的自定义字段显示在“添加新用户”页面中。

我还想在wp_usermeta表中插入值,为此我使用以下钩子:

  • personal_options_update
  • edit_user_profile_update

这些钩子在编辑或更新配置文件时也能正常工作,但我需要在添加新用户时在wp_usermeta tabe中插入记录,而不是在配置文件更新时。

请给我一些将在ADD新用户处使用的钩子。

提前谢谢。

4 个答案:

答案 0 :(得分:12)

使用此挂钩

add_action('user_new_form', 'xxxx');

好的,这是在用户添加/编辑时为用户mailChimp注册添加权限复选框的完整代码

    //Add a mailchimp permission field, on user creation, user profile update
    add_action('user_new_form', 'mailchimp_permission_field');
    add_action('show_user_profile', 'mailchimp_permission_field');
    add_action('edit_user_profile', 'mailchimp_permission_field');

    function mailchimp_permission_field($user) {
        ?>
        <table class="form-table">
            <tr class="form-field">
                <th scope="row"><label for="mail_chimp">Mail Chimp </label></th>
                <td>
                    <label for="mail_chimp">
                        <input style="width: auto;" type="checkbox" name="mail_chimp" id="mail_chimp" 
                            <?php if(current_filter() == 'user_new_form' || get_the_author_meta('mail_chimp', $user->ID )): ?>
                            checked = "checked"
                            <?php endif; ?> />
                        Subscribe to MailChimp.
                    </label>
                </td>
            </tr>
        </table>
    <?php }

// handle mailchimp registrations on user creation
    add_action( 'user_register', 'subscribe_to_mailchimp_after_registration', 10, 1 );

    function subscribe_to_mailchimp_after_registration( $user_id ) {
        if (isset($_POST['email']) && isset($_POST['mail_chimp']) && $_POST['mail_chimp'] == 'on') {
            mailchimp_subscribe($_POST['email']);
        }
    }

//Save new field for user in users_meta table
    add_action('user_register', 'save_mailchimp_permission_field');
    add_action('edit_user_profile_update', 'save_mailchimp_permission_field');

    function save_mailchimp_permission_field($user_id) {

        if (!current_user_can('edit_user', $user_id)) {
            return false;
        }

        if (isset($_POST['mail_chimp']) && $_POST['mail_chimp'] == 'on') {
            update_usermeta($user_id, 'mail_chimp', true);
            mailchimp_subscribe(get_userdata($user_id)->user_email);
        }
        else {
            update_usermeta($user_id, 'mail_chimp', false);
            mailchimp_unsubscribe(get_userdata($user_id)->user_email);
        }
    }

答案 1 :(得分:2)

据我所知,没有会在新用户页面上触发的动作挂钩。在user-new.php中搜索do_action

答案 2 :(得分:1)

根据documentation,您可以 hook进行user_new_form操作,当然您的WordPress版本应高于3.7.0版本。

此挂钩在新用户表单的末尾触发。它传递上下文字符串,以使两种类型的新用户表单都具有唯一的目标能力。上下文为add-existing-user(多站点)和add-new-user(单站点和网络管理员)。

  add_action('user_new_form', 'your_function_name');

答案 3 :(得分:0)

wp-includes/user.php

中试用此代码
do_action('profile_update', XXXX);
do_action('user_register', XXXX);
相关问题