Trong tuyệt vọng tôi cũng đang yêu cầu sự giúp đỡ trong diễn đàn này - nếu ai đó (BẤT CỨ AI!) Có thể xem bài đăng này và xem liệu họ có thể giúp tôi biết ơn mãi mãi không
http://wordpress.org/support/topic/wp_update_user-not-updating?replies=11
Về cơ bản - Tôi đang cập nhật vai trò và khả năng của người dùng thông qua tập lệnh nhưng các thay đổi chỉ có hiệu lực (tức là người dùng có thể thấy các mục menu cụ thể) khi tôi truy cập vào người dùng đó và nhấn "lưu"
Cảm ơn với sự mong đợi!!
Chris
CẬP NHẬT:
Có lẽ điều này giúp giải quyết nó?
Đây là đối tượng WP_User mà tôi đã lặp lại trên màn hình khi đăng nhập với tư cách là người dùng mới thay đổi :
WP_User Object ( [data] => stdClass Object ( [ID] => 130 [user_login] => test [user_pass] => $P$BuHO1ABLCNQ716tktgyes4jqqkfVxG. [user_nicename] => test [user_email] => email@gmail.com [user_url] => [user_registered] => 2012-07-19 12:07:52 [user_activation_key] => [user_status] => 0 [display_name] => test ) [ID] => 130 [caps] => Array ( [editor] => 1 ) [cap_key] => wp_capabilities [roles] => Array ( [0] => editor ) [allcaps] => Array ( [upload_files] => 1 [unfiltered_html] => 1 [edit_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [edit_pages] => 1 [read] => 1 [level_7] => 1 [level_6] => 1 [level_5] => 1 [level_4] => 1 [level_3] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [edit_published_pages] => 1 [publish_pages] => 1 [manage_options] => 1 [view_menu] => 1 [editor] => 1 ) [filter] => )
Đây là cách mục menu đang được tạo trong tệp plugin của tôi (sẽ hiển thị cho người dùng):
add_menu_page('Welcome', 'Welcome','edit_posts', 'welcome', 'welcome_page', get_bloginfo('template_url').'/images/icon.png', 0);
Đây là chức năng / trang mà mục menu trả về:
function welcome_page()
{
global $currrent_user;
if(!current_user_can('edit_posts'))
{
print '<div class="wrap"><h2>Your account has been restricted, most likely due to an unpaid subscription.</div>';
}
else
{
include 'welcome-page.php';
}
}
Như bạn có thể thấy - người dùng chỉ cần khả năng edit_posts để xem mục menu và cho chức năng trả về trang chào mừng. Người dùng thực sự có khả năng này, nhưng không thể làm một trong những điều này - trừ khi tôi nhấp vào "lưu" với tư cách quản trị viên trong trang chỉnh sửa người dùng ??
Chỉnh sửa 2
Sau đây là tất cả các cách tiếp cận khác nhau mà tôi đã thực hiện để thay đổi vai trò người dùng - nếu nó giúp!
//using this currently
$user = new WP_User($unpaid->uid);//$unpaid->uid is the users ID
$user->set_role('editor');
if(!$user->has_cap('edit_posts'))
{
$user->add_cap('edit_posts');
}
wp_cache_delete($unpaid->uid, 'users');
//another attempt
$uID = $unpaid->uid;
wp_insert_user(array('ID'=>$uID,'role'=>'editor'));
CẬP NHẬT LẠI!
Tôi vừa thử điều này và một lần nữa, db được cập nhật, thậm chí hiển thị 'trình soạn thảo' trong bảng quản trị, nhưng người dùng vẫn không thể thấy các mục menu phù hợp trừ khi tôi nhấp vào "cập nhật" trên hồ sơ của họ!
$new = new WP_User($current_user->ID);
$new->set_role('editor');
wp_cache_delete( $new->ID, 'users' );
wp_cache_delete( $new->user_login, 'userlogins' );
wp_cache_delete( $new->user_email, 'useremail' );
wp_cache_delete( $new->user_nicename, 'userslugs' );
do_action('profile_update');
Có suy nghĩ gì không?
update_user_meta($user_id, 'wp_capabilities', '');