如何使用ADD_USER_META或其他工具添加自定义用户功能?

时间:2018-03-07 作者:Mohammad Anbarestany

我有两个WordPress站点,其SSO配置如前所述here 但是回答中的插件对我不起作用,所以我尝试编写一个代码来为第二个站点用户添加功能:

$wp_user_query = new WP_User_Query(array(\'role\' => \'author\'));
$users = $wp_user_query->get_results();
if (!empty($users)) {
    foreach ($users as $user)
    {
        add_user_meta( $user->id, \'orewpst_capabilities\', "a:1:{s:6:\'author\';b:1;}", true ); 
        add_user_meta( $user->id, \'orewpst_user_level\', \'2\', true ); 
    }
}
问题是的输出结果"a:1:{s:6:\'author\';b:1;}"s:23:"a:1:{s:6:\'author\';b:1;}"

“我不知道是什么”;s: 23英寸;方法以及它出现在数据库中的原因!

update: 我想要绳子"a:1:{s:6:\'author\';b:1;}" 存储在数据库中而不进行任何更改!但不知何故,我的代码添加了一个;s: 第23条:;在它之前。

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

请尝试在不手动序列化的情况下传递值,因为WordPress将为您执行此操作:

add_user_meta( $user->id, \'orewpst_capabilities\', array( \'author\' => 1 ), true );

update_user_meta( $user->id, \'orewpst_capabilities\', array( \'author\' => 1 ) ); // it will create the meta data for you if it doesn\'t exist already.
Thes:23 表示您存储了一个包含23个字符的字符串。

希望有帮助!

SO网友:maheshwaghmare

没错s:23 是序列化数据。WordPress自动以序列化格式存储数据。

此外,要设置用户功能,请使用函数add_cap() 而不是更新用户元。有关更多详细信息,请查看WordPress手册user roles and capabilities.

结束

相关推荐

About Wordpress capabilities

我知道WordPress是博客引擎的最佳选择,通过一些插件,如Advance Custom Field,WP可以成为一个很棒的CMS。但它仍然有利于出版商将内容推送给用户。现在我的处境相当严峻。我的朋友想使用WP作为一个引擎,用户可以贡献他们的帖子,其他人可以查看它。是否可以使用WP我可以创建自定义主题(&a);插件可以做到这一点,但当用户在插件上放置很多东西(页面和帖子)时,它对性能有好处吗?