pass user ID not user object to `wp_set_current_user()`
authorChristian Wach <needle@haystack.co.uk>
Tue, 10 Nov 2015 10:12:11 +0000 (10:12 +0000)
committerChristian Wach <needle@haystack.co.uk>
Tue, 10 Nov 2015 10:12:11 +0000 (10:12 +0000)
CRM/Utils/System/WordPress.php

index bb4b8e721ecf47e8707589428972a8edaa1d584d..885ea469343c4b25d42f9dcbec76f98a2740fa1a 100644 (file)
@@ -367,7 +367,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
       $name = $name ? $name : trim(CRM_Utils_Array::value('name', $_REQUEST));
       $pass = $pass ? $pass : trim(CRM_Utils_Array::value('pass', $_REQUEST));
       if ($name) {
-        $uid = wp_authenticate($name, $pass);
+        $uid = wp_authenticate($name, $pass); // this returns a WP_User object if successful
         if (!$uid) {
           if ($throwError) {
             echo '<br />Sorry, unrecognized username or password.';
@@ -378,7 +378,11 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base {
       }
     }
     if ($uid) {
-      $account = wp_set_current_user($uid);
+      if ($uid instanceof WP_User) {
+        $account = wp_set_current_user($uid->ID);
+      } else {
+        $account = wp_set_current_user($uid);
+      }
       if ($account && $account->data->ID) {
         global $user;
         $user = $account;