Ich baue ein WordPress-System, in dem ich Benutzer aus einer externen Quelle anstelle von WordPress DB authentifizieren möchte. Ich verwende den wsdl-Dienst, um mit der externen Datenbank zu kommunizieren, und erhalte die richtigen Benutzerinformationen basierend auf ihren Anmeldeinformationen. Allerdings komme ich nicht weiter mit dem erhaltenen Ergebnis weiter. Bitte hilf mir jemand.
Im Folgenden sind die Schritte aufgeführt, die ich bisher durchgeführt habe
Benutzerdefinierte Funktion in pluggable.php erstellt und aufgerufen user.php
function wp_authenticate_username_password($user, $username, $password) {
if ( is_a($user, 'WP_User') ) { return $user; }
if ( empty($username) || empty($password) ) {
if ( is_wp_error( $user ) )
return $user;
$error = new WP_Error();
if ( empty($username) )
$error->add('empty_username', __('<strong>ERROR</strong>: The username field is empty.'));
if ( empty($password) )
$error->add('empty_password', __('<strong>ERROR</strong>: The password field is empty.'));
return $error;
}
//$user = get_user_by('login', $username); /*Replaced it with the below*/
$user = validate_ep($username,$password);
echo "<pre>";
print_r($user); /*Produces the result in step 3*/
echo "</pre>";
exit;
Benutzerdefinierte Funktion in pluggable.php
die mit meiner externen DB kommuniziert
function validate_ep($username, $userpwd) {
$wsdl = "my web service path";
$client = new SoapClient($wsdl); //(Parameter is the wsdl file in which the services are written.
$newObj = new stdClass;
$user_name = ucfirst($username);
$user_pwd = md5($userpwd);
$display_type="wp";
try {
$result = $client->log_process(array(0 => $user_name, 1 => $user_pwd, 2 => $display_type));
if ($result==FALSE)
return FALSE;
foreach($result->item as $key=>$valObj) {
if(!is_numeric($valObj->key)) {
$newObj->{$valObj->key} = $valObj->value;
}
}
/*$actual = unserialize(base64_decode($result));*/
if (count($result) > 0) {
$user = new WP_User;
$user->init($newObj);
return $user;
}
} catch (SoapFault $exp) {
//print_r( $exp->getMessage());
}
return false;
}
Das vom Webdienst zurückgegebene Ergebnis
WP_User Object
(
[data] => stdClass Object
(
[id] => ID
[organization] => ID
[login] => UserName
[password] => ***
[name] => Name
)
[ID] => 0
[caps] => Array
(
)
[cap_key] => wp_capabilities
[roles] => Array
(
)
[allcaps] => Array
(
)
[filter] =>
)
Jemand bitte helfen, was kann ich nach diesen Schritten tun.