WP-FBConnect 改造修正(登入更新資料)

昨天很高興的登入班網之後,卻發現……
資料竟然又被改回來了!!
(這可讓弦受到不小打擊呢!)仔細一看,結果發現了一個細節問題……
在 fbconnect.php 裡面,竟然還有「殘存」的部份沒被修正。
而這次修改很簡單,只需要打開 fbconnect.php 找到下面的函式:

function fbc_update_facebook_data($force=false) {
  $last_cache_update = get_option(FBC_LAST_UPDATED_CACHE_OPTION);
  $delta = time() - $last_cache_update;
  if ($delta < 24*60*60 && !$force) {
    return;
  }

  update_option(FBC_LAST_UPDATED_CACHE_OPTION,
                time());

  global $wpdb;
  $sql = "SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'fbuid'";
  $res = $wpdb->get_results($wpdb->prepare($sql), ARRAY_A);
  if (!$res) {
    return -1;
  }

  $fbuid_to_wpuid = array();
  foreach($res as $result) {
    $fbuid_to_wpuid[$result['meta_value']] = $result['user_id'];
  }

  try {
    $userinfo = fbc_anon_api_client()->users_getInfo(
      array_keys($fbuid_to_wpuid),
      fbc_userinfo_keys());

  } catch(Exception $e) {
    return -1;
  }

  $userinfo_by_fbuid = array();
  foreach($userinfo as $info) {

    $wpuid = $fbuid_to_wpuid[$info['uid']];

    $userdata = fbc_userinfo_to_wp_user_used($info);
    $userdata['ID'] = $wpuid;

    wp_update_user($userdata);
  }

  return count($userinfo);
}

並且將其中的:

$userdata = fbc_userinfo_to_wp_user($info);

修正為:

$userdata = fbc_userinfo_to_wp_user_used($info);

那麼,就不會有問題了!
不過各位可能會疑惑,這次是要做什麼的呢?

上一次修改的部份是「新增使用者」
因此,假如比對到已經存在,就會進行登入。
而 WP-Facebook Connect 這款插件,似乎還會做「更新」
而只要碰到更新,就會把資料更新上來。
因此,這次是讓更新部份變成正常。

之後,各位就可以享受 WordPress 結合 Facebook 的時光拉!
而經過弦的使用,也決定替社團網站加上 Facebook 整合功能。

而且,還打算直接捨去 WordPress 原有的登入功能。
後台登入就大大方方的顯示一個 Facebook Connect 按鈕!
畢竟這樣還算挺方便的,雖然目前 WordPress + Facebook 沒有記憶時間的功能。
不過我想修改一下就會有了~

Comments are closed.