In meiner Verzweiflung bitte ich auch in diesem Forum um Hilfe - wenn jemand (JEMAND!) In diesem Beitrag nachsehen könnte, ob er helfen könnte, wäre ich auf ewig dankbar
http://wordpress.org/support/topic/wp_update_user-not-updating?replies=11
Grundsätzlich - Ich aktualisiere die Rolle und die Funktionen eines Benutzers per Skript, aber die Änderungen werden erst wirksam (dh der Benutzer kann bestimmte Menüelemente sehen), wenn ich in diesen Benutzer gehe und auf "Speichern" klicke.
Danke im Voraus!!
Chris
AKTUALISIEREN:
Vielleicht hilft das, es zu lösen?
Dies ist das WP_User-Objekt, das ich beim Anmelden als neu geänderter Benutzer auf dem Bildschirm wiedergegeben habe :
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] => )
So wird der Menüpunkt in meiner Plugin-Datei erstellt (die dem Benutzer angezeigt werden soll):
add_menu_page('Welcome', 'Welcome','edit_posts', 'welcome', 'welcome_page', get_bloginfo('template_url').'/images/icon.png', 0);
Dies ist die Funktion / Seite, die der Menüpunkt zurückgibt:
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';
}
}
Wie Sie sehen können, benötigt der Benutzer nur die Funktion edit_posts, um den Menüpunkt anzuzeigen und um die Begrüßungsseite zurückzugeben. Der Benutzer hat zwar diese Fähigkeit, kann aber keines dieser Dinge tun - es sei denn, ich klicke auf "Speichern" als Administrator auf der Seite zum Bearbeiten des Benutzers?
Bearbeiten 2
Im Folgenden sind die verschiedenen Ansätze aufgeführt, mit denen ich die Benutzerrolle geändert habe - wenn es hilft!
//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'));
UPDATE WIEDER!
Ich habe es gerade versucht und wieder, die Datenbank wird aktualisiert, zeigt sogar 'Editor' im Admin-Bereich, aber der Benutzer kann die entsprechenden Menüelemente immer noch nicht sehen, es sei denn, ich klicke in seinem Profil auf "Aktualisieren"!
$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');
Irgendwelche Gedanken?
update_user_meta($user_id, 'wp_capabilities', '');