WordPress ist eine Webapplikation von vielen - nicht selten muss eine Bridge zu anderen Systemen hergestellt werde. Dies kann zum Beispiel sein, um den Anwendern ein Single Sign-On über die Web-Anwendungen zu geben. Daher muss also automatisiert das Anlegen von Usern im System erfolgen. Je nach dem welches System das Führende ist, müssen die Daten abgeglichen werden. Aus der bisherigen Erfahrung müssen die User meist in WordPress angelegt werden, da dies nicht das führende System zur Userverwaltung ist. Für das automatisierte Anlegen von Usern hat WordPress die Funktion wp_insert_user() und darüber können derartige Scenarios realisiert werden.
Die Funktion braucht einige Parameter und schon kann es los gehen. Im folgenden Beispiel habe ich den Code so erstellt, dass man einen User anlegt, sobald das Backend aufgerufen wird. Für diese Arbeit kann also die functions.php des Themes oder ein Plugin bemüht werden, danach kann der Code wieder raus.
Um beispielsweise eine Bridge zu erstellen, gehört einiges mehr um den Code - hier soll lediglich die Funktion als Beispiel und Idee dienen. Näheres findet man auch in der Dokumentation zur Funktion oder im Core.
function fb_wp_insert_user() {
$user_data = array(
'ID' => '',
'user_pass' => wp_generate_password(),
'user_login' => 'dummy',
'user_nicename' => 'Dummy',
'user_url' => '',
'user_email' => 'dummy@example.com',
'display_name' => 'Dummy',
'nickname' => 'dummy',
'first_name' => 'Dummy',
'user_registered' => '2010-05-15 05:55:55',
'role' => get_option('default_role') // Standardrolle ziehen oder Rolle mitgeben, z.B. 'editor'
);
$user_id = wp_insert_user( $user_data );
}
add_action( 'admin_init', 'fb_wp_insert_user' );
Um die Bridge aufrecht zu erhalten und Updates von Usern ebenso zu spiegeln, gibt es eine Funktion für das Updaten eines Users - wp_update_user.
Ähnliche Scenarien sind auch für das Erzeugen von Beiträgen möglich, daher gibt es auch für diesen Anwendungsfall eine Funktion, welche in einem anderen Beitrag erklärt wurde.
Ich wäre dafür, das Beispiel zu "entschärfen" und nicht gleich den Administrator zu verwenden! Es gibt User, die das 1:1 entkleben, das laufen lassen und den User dann nicht löschen.
Ist nicht klug, einen neuen Admin in die DB zu schreiben selbst wenn es nur Democode ist.
@Heiko: habe es mal angepasst, vermutlich gibt es diese User wirklich - aber man sollte schon überlegen, bevor man so in einer Live-Umgebung hantiert. Klar, ich setze Sachen voraus, die andere vermutlich nicht bedenken - betriebsblind - aber ich will es einfach mit den Hinweisen oder der Erziehung nicht übertreiben. Die Funktion braucht nicht zwingend die Rolle als Parameter, sie hat sehr viele Standard-Parameter. Der Beitrag soll wirklich nur dazu dienen - ah, da gibt es was und ich kann was damit machen. Wieder ein Punkt, der mehr als das klassische Blog ist.
Wenn man die Funktion extern nutzen will, um sie bspw. in ein anderes System zu integrieren, darf man nicht vergessen, zusätzlich zum üblichen wp-load.php auch wp-includes/registration.php zu inkludieren, ansonsten ist die Funktion wp_insert_user() nicht bekannt.
@Jeriko: definitiv; der Zugriff von Außen ist ohne
wp-load.phpnicht zu machen, dazu auch ein älterer Beitrag - wieder schlägt die Betriebsblindheit zu, da mir das selbstverständlich erscheint. Diese Kommentarfunktion ist superYeah, aber vor allem auch besagte registration.php - daran bin ich erst vor kurzem für zwei Stündchen verzweifelt, einfach weil ich nicht verstanden habe, warum wp_insert_user nicht bekannt war
Eine Authentifizierung gegen ein Active Directory bzw. LDAP ist bestimmt auch nicht verkehrt
http://wordpress.org/extend/plugins/active-directory-authentication/
Das kommt mir für ein laufendes Projekt von mir sehr gelegen, war gerade auf der Suche nach einer Möglichkeit und bin dann hier bei dir gelandet. Vielen Dank für den Artikel.
Hallo habe zu folgender Zeile im Code eine Frage:
'user_pass' => wp_generate_password(),Ist es damit möglich auch Passwörter aus einer alten WP-Installation einzutragen? Um zum Beispiel aus einer alten WordPress user-tabelle alle Benutzer in eine neue WordPress-Installation zu migrieren?
@mark: nein, diese Funktion generiert ein neues Passwort, mehr nicht.
Prima Vorschlag bzw. Idee. Gibt's dafür nicht schon ein Plugin? Würde mich wundern, wenn nicht.