Я пытался подключиться к действию регистрации 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 вызывает эту проблему. (Если вы хотите увидеть код для того, что я сделал по-другому для этого, я могу опубликовать его.)
Благодарим за помощь.