Função de estruturação com register_errors hook

Eu criei um plugin que adiciona uma function ao processo de registro onde as informações do usuário também são adicionadas a um db externo. O problema é que, quando a function é executada com sucesso, o usuário pode ser adicionado ao db externo, mas o processo de registro wordpress retorna e o erro, o usuário ainda é adicionado ao db externo. Como posso estruturar isso de modo que, se houver um erro no lado do WordPress ou no lado externo, o usuário vê e o erro e nada é adicionado a qualquer db.

Aqui está o meu código:

function add_user_to_SF($errors, $sanitized_user_login, $user_email ) { global $SF_USERNAME; global $SF_PASSWORD; try { $mySforceConnection = new SforceEnterpriseClient(); $mySoapClient = $mySforceConnection->createConnection(CD_PLUGIN_PATH . 'Toolkit/soapclient/enterprise.wsdl.xml'); $mySFlogin = $mySforceConnection->login($SF_USERNAME, $SF_PASSWORD); $sObject = new stdclass(); $sObject->FirstName = $_POST['user_login']; $sObject->LastName = $_POST['user_login']; $sObject->Email = $_POST['user_email']; $createResponse = $mySforceConnection->create(array($sObject), 'Contact'); $ids = array(); foreach ($createResponse as $createResult) { array_push($ids, $createResult->id); } } catch (Exception $e) { //echo $mySforceConnection->getLastRequest(); //echo $e->faultstring; $errors->add( 'demo_error', __('ERROR: There is a Salesforce problem.','mydomain') ); return $errors; } return $errors; } add_filter( 'registration_errors', 'add_user_to_SF', 10, 3 ); 

Solutions Collecting From Web of "Função de estruturação com register_errors hook"

A variável $errors é uma instância do WP_Error . O WordPress fez toda a lógica interna antes que o filtro seja usado, para que você possa verificar os erros existentes:

 function add_user_to_SF($errors, $sanitized_user_login, $user_email ) { if ( $errors->get_error_code() ) return $errors; global $SF_USERNAME; // continue with your custom code …