it-swarm.com.de

wie füge ich benutzerdefinierte Benutzerfunktionen mit add_user_meta oder etwas anderem hinzu?

ich habe zwei WordPress-Sites mit SSO-Konfigurationen, wie in hier beschrieben, aber das Plugin in der Antwort hat bei mir nicht funktioniert. Deshalb habe ich versucht, einen Code zu schreiben, um Funktionen für Benutzer einer zweiten Site hinzuzufügen:

 $ wp_user_query = new WP_User_Query (Array ('role' => 'author')); 
 $ users = $ wp_user_query-> get_results (); 
 if (! empty ( $ users)) {
 foreach ($ users als $ 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); 
} 
} 

das Problem ist das Ausgabeergebnis für "a:1:{s:6:'author';b:1;}" ist s:23:"a:1:{s:6:'author';b:1;}"

ich weiß nicht, was "s: 23" bedeutet und warum es in der Datenbank erscheint!

update : Ich möchte, dass der String "a:1:{s:6:'author';b:1;}" ohne Änderung in der Datenbank gespeichert wird! aber irgendwie fügt mein Code ein "s: 23:" davor hinzu.

Versuchen Sie, den Wert zu übergeben, ohne ihn manuell zu serialisieren, da WordPress ihn sowieso für Sie erledigt:

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

oder

update_user_meta( $user->id, 'orewpst_capabilities', array( 'author' => 1 ) ); // it will create the meta data for you if it doesn't exist already.

Der s:23 bedeutet, dass Sie eine Zeichenfolge mit 23 Zeichen gespeichert haben.

Ich hoffe es hilft!

1
Felipe Elia

Richtig, der s:23 besteht aus serialisierten Daten. WordPress speichert die Daten automatisch im serialisierten Format.

Verwenden Sie zum Festlegen der Benutzerfunktionen die Funktion add_cap(), anstatt das Benutzer-Meta zu aktualisieren. Weitere Informationen finden Sie im WordPress-Handbuch Benutzerrollen und -funktionen .

0
maheshwaghmare