我有一个Wordpress网站,需要导入9,000多个用户才能设置目录列表。我从现有的MySQL(非wordpress)数据库导入它们,导入的一切都很好。用户名,密码和显示名称(MD5哈希,但我测试过,WP会在首次登录时将密码更改为phpass。)
事情是......它们都是以NONE的用户角色导入的。我需要将其更改为Subscriber。现在,我可以进入我的phpMyAdmin,我可以在wp_usermeta表中看到字段行值'wp_capabilities'。我可以看到:
admin accounts
= a:1:{s:13:"administrator";b:1;}
Subscribers
= a:1:{s:10:"subscriber";b:1;}
我还可以看到每个user_id都输入了很多值。问题是?如何编写批量MySQL命令以将值wp_capabilites='a:1:{s:10:"subscriber";b:1;}'
添加到每个user_id中,除了1,2和3之外。新导入的用户?
先谢谢!
答案 0 :(得分:0)
试试这个:
UPDATE wp_usermeta SET wp_capabilities="a:1:{s:10:'subscriber';b:1;}"
WHERE user_id not in(1,2,3);
或
UPDATE wp_usermeta SET wp_capabilities="a:1:{s:10:'subscriber';b:1;}"
WHERE user_id > 3;
答案 1 :(得分:0)
我实际上最终使用了这个查询:
`UPDATE wp_usermeta SET meta_key = 'wp_capabilities', meta_value = 'a:1:{s:10:"subscriber";b:1;}'
WHERE user_id > 3
由于该表没有导入联系人的数据,因此对于除管理员帐户以外的所有记录,这是meta_key和meta_value下的唯一值。
有人能看出为什么这会不正确吗?
谢谢!
答案 2 :(得分:0)
function update_usr_meta(){
$users = get_users();
if( !empty($users) && count($users) > 0 ) {
foreach( $users as $u ) {
if( $u->ID > 3 ) {
update_usermeta($u->ID, 'wp_capabilities', "a:1:{s:10:'subscriber';b:1;}");
}
}
}
}
add_action('init', update_usr_meta);
运行此功能一次,所有用户都将更新。希望这会有所帮助。