WordPress: Function add_user_to_blog() Can Not Specify Blog

Posted by – November 30, 2011

最近在開發 WordPress Network 的 plugin,其中有一功能是讓使用者取得特定部落格的特定身分。翻找了 WordPress CODEX,找到了 add_user_to_blog() 這個 function。

根據官方的說明,這個 function 是這樣用的:

<?php add_user_to_blog( $blog_id, $user_id, $role ) ?>

三個參數分別是 $blog_id、$user_id、$role,簡單明瞭,清晰易懂,但是實際上根本不是這麼一回事啊,不論給 $blog_id 幾號,使用者總是取得 1 號部落格的權限。後來翻到另一篇官方文件,提到要用 restore_current_blog() 來還原 "目前的部落格"。但測試後還是失敗,指定的部落格 id 就是無效....

...真是讓人挫折...

不過既然 restore 沒有用,乾脆切換過去再指派好了... 所以寫了下面的 code....

switch_to_blog(5); // restore 不行,乾脆切換過去
#restore_current_blog();
$blog_id = 5;
$user_id = 27;
$role = 'editor';
add_user_to_blog($blog_id, $user, $role);

結果就可以了.... 有種被 WP Codex 欺騙的感覺。總算是完成工作了。

References:

Leave a Reply

Your email address will not be published. Required fields are marked *