何时调用wp_set_password()或如何获取密码

时间:2017-08-13 作者:Rich

Disclaimer: I\'m fully aware of the security issues created by this. This is not for production.

每当在WordPress中注册新用户或(重新)设置密码时,我都会尝试捕获该密码,对其进行加密,并将其保存到wp\\u usermeta表中。

我成功地加入了profile_update 完成此操作,但上述过程仅在配置文件页面中更改密码且不考虑新用户注册时有效。

add_action( \'profile_update\', \'save_encrypted_passwords_to_usermeta\' );

function save_encrypted_passwords_to_usermeta( $user_id ) {
    if ( isset( $_POST[\'pass1\'] ) ) {
        $password = $_POST[\'pass1\'];
        update_user_meta( $user_id, \'password\', $password );
    }
}
我已经查看了可插入功能wp_set_password() 为了完成这一点,我们创建了这个muplugin,它似乎根本不起作用。

function wp_set_password( $password, $user_id ) {
    global $wpdb;
    $hash = wp_hash_password( $password );
    $wpdb->update($wpdb->users, array(\'user_pass\' => $hash, \'user_activation_key\' => \'\'), array(\'ID\' => $user_id) );
    update_user_meta( $user_id, \'password\', $password );
    wp_cache_delete($user_id, \'users\');
}
我想wp_set_password 总是在创建或设置密码时调用,所以我不确定为什么我的可插入函数重写根本不起作用。

1 个回复
SO网友:Tom J Nowell

不,我想wp_user_update 被人利用了,但我觉得你的动机可疑,想不出你想做什么有什么合理的用途

但如果您真的想走这条路,请使用pre_user_pass 滤器

我还想指出的是,密码存储为散列而不是加密,并且您的代码没有加密机制,这是有原因的

结束

相关推荐

Password protected sites

我正在为一些小学校做WP页面。我想给老师们一些特别的空间。我创建了一个受密码保护的页面,效果很好。我想创建更多,并使用第一个来呈现链接。我将主站点设置为其他站点的父站点。这对我来说很重要user should be asked for the password just once.我面临的问题:如果我用密码(即使是同一个)保护所有这些页面,那么每个页面上都会要求用户输入密码。如果我只保护第一页,而不是所有其他页面sitemap.xml (“Google XML Sitemaps”插件)我可以从网站地图中排