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?
quelle
update_user_meta($user_id, 'wp_capabilities', '');
Antworten:
Ich benutze
remove_role
undadd_role
aktualisiere dann einen Benutzer von einer Rolle auf eine andere.Hier ist eine Funktion, die prüft alle Benutzer in der Benutzerrolle Teilnehmer und aktualisieren sie auf Editor jede Stunde.
Hier ist eine Möglichkeit, wie Sie versuchen können, die Benutzer manuell zu aktualisieren:
Führen Sie dies als http://yourdomain.com/?upgrade_user aus
quelle
if ( $user->has_cap('edit_posts') ) {}
Ich bessere Methode ist. Womit WP_User zum Umschalten / Festlegen der Rolle verwendet wird.
quelle
wp_cache_delete($user_id, 'users');
nach meinem $ user-> set_role hinzuzufügen. Aber bevor ich das mache. Werden dem Benutzer die richtigen Menüpunkte angezeigt, wenn er sich abmeldet und erneut anmeldet? In diesem Fall stört der WP-temporäre Cache und wp_cache_delete löscht dies. (Nicht getestet)