2015-07-14 2 views
0

Я пытался подключиться к действию регистрации WordPress, чтобы я мог хранить информацию об учетной записи нового пользователя в моей базе данных Parse.com User. Однако, поскольку я использую BuddyPress, WP hook user_register, похоже, не работает.bp_core_signup_user hook не работает (PHP, BuddyPress, Wordpress и Parse.com)

После проведения исследований в Интернете кажется, что я должен использовать крюк BP bp_core_signup_user, но это, похоже, не работает, и вся информация в Интернете о том, как его реализовать, - это годы и может быть устаревшей. Проблемно, BuddyPress не имеет хорошего Codex вообще, поэтому я как бы застрял. Я занимаюсь этим часами, но не могу понять.

Это функция, которую я создал в попытке внедриться в процессе регистрации:

<?php 
// Saves the newly registered BP user account to the Parse DB. 
add_action('bp_core_signup_user', 'saveNewParseUser', 10, 5); 

function saveNewParseUser($userId, $userLogin, $userPass, $userEmail, $userMeta) { 
//Commit new user data to an HTTP POST request to Parse. 
$url = 'https://api.parse.com/1/users'; 

$postdata = array(
    "wpUserId" => $userId, 
    "username" => $userLogin, 
    "password" => $userPass, 
    "email" => $userEmail, 
    "fullName" => $userMeta[display_name], 
    "firstName" => $userMeta[first_name], 
    "lastName" => $userMeta[last_name] 
); 
$appID = "a5TtlVG52JKTC************************"; 
$restAPIKey = "Qc86jA8dy1FpcB**************************"; 
$options = array(); 
$options[] = "Content-type: application/json"; 
$options[] = "X-Parse-Application-Id: $appID"; 
$options[] = "X-Parse-REST-API-Key: $restAPIKey"; 
$options[] = "X-Parse-Revocable-Session: 1"; 

//open connection 
$ch = curl_init($url); 

//sets the number of POST vars & POST data 
curl_setopt_array($ch, array(
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => json_encode($postdata), 
    CURLOPT_HTTPHEADER => $options, 
    CURLOPT_RETURNTRANSFER => true 
)); 

//execute post 
$result = curl_exec($ch); 
$resultArray = json_decode($result, true); 

//Error check 
if (curl_errno($ch)) { 
    echo "Error Code " . curl_errno() . ": " . curl_error($ch); 
} 

//Retrieve and place Parse user session token & ID into WP DB user account. 
add_user_meta($userId, 'parseSessionToken', $resultArray[sessionToken]); 
add_user_meta($userId, 'parseObjId', $resultArray[objectId]); 
curl_close($ch); 
} 

Что я делаю неправильно? Неужели это даже не зацепило и не запустило, как оно предназначено?

Я знаю, что это не сработает, потому что я проверяю базу данных Parse User DB после регистрации учетной записи, и новая строка не создается, а метаинформация, которую я помещаю в учетную запись WP, вообще не отображается.

Интересно, что этот DID работы, когда я подключил в РГ user_register (с соответствующим параметром и postdata настройки массива), когда я включил exit; вызов в конце функции, что существенно предотвращен процесс регистрации от прохождения BuddyPress' и его процедуры активации, и вместо этого отправился прямо на регистрацию через Wordpress напрямую. Это также оставило веб-страницу, отображающую ответ от HTTP-запроса, - это был ответный орган JSON, как ожидалось из Parse, поэтому я знаю, что он действительно работал. Почему он должен работать, избегая BuddyPress? Похоже, что BuddyPress вызывает эту проблему. (Если вы хотите увидеть код для того, что я сделал по-другому для этого, я могу опубликовать его.)

Благодарим за помощь.

ответ

1

Я понял, что случилось, и я чувствую себя полным идиотом, потому что это должно было быть очевидно.

Нет ничего плохого в моей функции - я просто не понял, что пользовательский плагин, в котором он содержится, был отключен! По-видимому, это произошло, когда я переименовал файл PHP, удалил тот, что был на сервере, и ввел новый, прежде чем мой вопрос стал проблемой.

Я узнал свой урок. И теперь я знаю, что изменение файлов плагина приведет к отключению плагина в целом.

Как таковой, мой крючок на user_registration все еще работает отлично, и нет необходимости проходить через крюк bp_core_signup_user, поэтому я вернулся к первому. В будущем для тех, кто хочет знать, это моя последняя функция, которую я использовал:

<?php 
// Saves the newly registered WP user account to the Parse DB. 
add_action('user_register', 'saveNewParseUser'); 
function saveNewParseUser($newUserId) { 

//Retrieve the new User object from WP's DB. 
$newUser = get_userdata($newUserId); 

//Commit new user data to an HTTP POST request to Parse. 
$url = 'https://api.parse.com/1/users'; 
$postdata = array(
    "wpUserId" => $newUserId, 
    "username" => $newUser->user_login, 
    "password" => $newUser->user_pass, 
    "email" => $newUser->user_email, 
    "fullName" => $newUser->display_name, 
    "firstName" => $newUser->first_name, 
    "lastName" => $newUser->last_name 
); 
$appID = "a5TtlVG52JKTCbc*******************"; 
$restAPIKey = "Qc86jA8dy1F************************"; 
$options = array(); 
$options[] = "Content-type: application/json"; 
$options[] = "X-Parse-Application-Id: $appID"; 
$options[] = "X-Parse-REST-API-Key: $restAPIKey"; 
$options[] = "X-Parse-Revocable-Session: 1"; 

//open connection 
$ch = curl_init($url); 

//sets the number of POST vars & POST data 
curl_setopt_array($ch, array(
    CURLOPT_POST => true, 
    CURLOPT_POSTFIELDS => json_encode($postdata), 
    CURLOPT_HTTPHEADER => $options, 
    CURLOPT_RETURNTRANSFER => true 
)); 

//execute post 
$result = curl_exec($ch); 
$resultArray = json_decode($result, true); 

//Error check 
if (curl_errno($ch)) { 
    echo "Error Code " . curl_errno() . ": " . curl_error($ch); 
} 

//Retrieve and place Parse user session token & ID into WP DB user account. 
add_user_meta($newUserId, 'parseSessionToken', $resultArray[sessionToken]); 
add_user_meta($newUserId, 'parseObjId', $resultArray[objectId]); 

curl_close($ch); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^