New User Save Filter

时间:2014-08-12 作者:Howdy_McGee

我正在使用新的(ish)过滤器add_action( \'user_new_form\', \'funcy\', 9 ); 添加自定义字段以创建新的用户页。我正在使用

add_action( \'personal_options_update\', \'save_user_meta\' );
add_action( \'edit_user_profile_update\', \'save_user_meta\' );
钩子将我的元数据保存在其他编辑用户页面上。我已经确认,创建新用户时,WP不会与上述内容挂钩。我已经试过了

  1. /wp-admin/user-new.php
  2. /wp-adin/user-edit.php
但没有任何关于如何保存新用户信息的信息。问题的核心是,我可以挂接什么来从user_new_form?

2 个回复
最合适的回答,由SO网友:Shazzad 整理而成

为此,您必须使用user_register 在wp includes/users上定义的钩子。php第1759行。

  • personal_options_update 当用户更新自己的配置文件时,调用hook
  • edit_user_profile_update 在管理员更新其他用户配置文件时调用
打开user-new.php 第页,使用创建新用户edit_user 函数,函数引用:(wp admin/includes/users.php第30行)

因此,使用user_register

SO网友:Dragi Postolovski

它在新用户和编辑用户屏幕中添加字段。别忘了在你的函数中包含这一点。php文件。

<?php

class UserFieldsClass
{
    public function __construct()
    {
        // This will create a new area in the user edit screen and the add new user screen.
        add_action( \'user_new_form\', array( $this, \'show_extra_profile_fields\' ) );
        add_action( \'show_user_profile\', array( $this, \'show_extra_profile_fields\' ) );
        add_action( \'edit_user_profile\', array( $this, \'show_extra_profile_fields\' ) );

        add_action( \'personal_options_update\', array($this, \'save_extra_profile_fields\') );
        add_action( \'edit_user_profile_update\', array($this, \'save_extra_profile_fields\') );
        add_action( \'user_register\', array( $this, \'save_extra_profile_fields\' ) );
    }

    function show_extra_profile_fields($user)
    { ?>
        <h3>More Information</h3>
        <table class="form-table">
            <tr>
                <th><label for="user_skype">Skype:</label></th>
                <td>
                    <input type="text" name="user_skype" id="user_skype"
                           value="<?php echo esc_attr(get_the_author_meta(\'user_skype\', $user->ID)); ?>"
                           class="regular-text"/><br/>
                    <span class="description">Please enter your Skype username.</span>
                </td>
            </tr>
        </table>
    <?php }

    function save_extra_profile_fields( $user_id ) {
        if (!current_user_can(\'manage_options\'))
            return false;

        update_user_meta($user_id, \'user_skype\', $_POST[\'user_skype\']);
    }
}

$userFieldsClass = new UserFieldsClass();

结束

相关推荐

MANAGE_USERS_CUSTOM_COLUMN筛选器触发的函数不起作用

我正在尝试添加一个自定义列un users。php,但它保持为空。我已经成功地在用户管理页面中添加了一列,在我的主题函数中使用了此代码。php文件:function add_user_test_column( $columns ) { $columns[\'test1\'] = \'Test\'; return $columns; } add_filter( \'manage_users_columns\', \'add_user_test_column\