WordPress EDIT_USER_PROFILE_UPDATE更新辅助角色

时间:2014-01-28 作者:Nikola R.

我正在尝试在用户编辑中保存次要角色字段。php独立于WP的主要角色。我在保存其他唯一的自定义字段时没有遇到问题,但对于角色(wp\\U功能),它似乎首先保存了我的角色(我将睡眠(10)设置为在过程中签入数据库),并且在请求结束时,wp保存了主角色字段,该字段覆盖了我以前保存的角色。

是否有任何方法可以对事件进行排序,以便在请求的最后执行我的函数?

以下是我目前掌握的情况:

挂钩:

<?php
add_action( \'edit_user_profile\',        array( $this, \'test_profile_form\'));
add_action( \'edit_user_profile_update\', array( $this, \'test_save_profile_form\' ));
回调:

function hook_save_profile_form($user_id) {
        if(!current_user_can("edit_user",$user_id)) {
            return false;
        }
        $user = new WP_User($user_id);
        $user->add_role($_POST[\'secondary-role\']);
        //debug
        sleep(10);
}

4 个回复
最合适的回答,由SO网友:Nikola R. 整理而成

我终于找到了解决方案和正确的方法:profile_update 在的结尾调用wp_insert_user 在里面user.php 从中调用edit_user.

wp\\U insert\\U用户结束:

if ( $update )
        do_action(\'profile_update\', $user_id, $old_user_data);
    else
        do_action(\'user_register\', $user_id);

    return $user_id;

SO网友:Marc Champagne

我用的是personal_options_updateedit_user_profile_update 钩子,但数据库信息被覆盖。这些挂钩在编辑当前用户时起作用,但当管理员编辑其他用户的配置文件时,信息不会持久化。我转而使用profile_update 钩子和更新是在编辑任何用户时保存的,因此在您想要编辑所有用户配置文件而不仅仅是当前用户的情况下,这似乎是最好的钩子。

SO网友:Jörn Lund

可以使用的第三个参数add_action 设置过滤器优先级。函数的默认值为10,因此大于10的值应该可以工作。

参考号:http://codex.wordpress.org/Function_Reference/add_action

SO网友:Jhony Penagos

使用profile_update 我可以解决这个问题。

结束

相关推荐

order users with drag'n'drop?

有很多插件可以让你通过拖放来订购页面和/或帖子。是否有与订单用户类似的内容?如果没有,是否可以为此创建一个插件(即是否有足够的过滤器、操作等)?