使用REGISTION_ERROR挂钩构造函数

时间:2013-03-14 作者:MF1

我创建了一个插件,在注册过程中添加了一个函数,用户信息也会添加到外部数据库中。问题是,当函数成功运行时,即用户可以添加到外部db,但wordpress注册过程返回并出错时,用户仍然被添加到外部db。我如何构造它,以便在Wordpress端或外部出现错误时,用户看到并出错,而不会向任何db添加任何内容。

这是我的代码:

    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\', __(\'<strong>ERROR</strong>: There is a Salesforce problem.\',\'mydomain\') );
              return $errors;
        }
              return $errors;
    }

    add_filter( \'registration_errors\', \'add_user_to_SF\', 10, 3 );

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

变量$errors 是的实例WP_Error. WordPress在使用过滤器之前已经完成了所有内部逻辑,因此您可以检查现有错误:

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 …

结束

相关推荐

多个单个站点,一个插件目录-调整plugins_url()

[这不是一个多站点问题]更新:这个问题在逻辑上是不可能的,或者是思维循环,如果你愿意的话,请检查下面的更新。技术是laid out here in WPEngineer.它允许有一个插件文件夹来为运行在同一服务器上的多个WordPress站点提供服务。所以,我所有的开发站点都在wp配置中有这个。phpdefine( \'WP_PLUGIN_DIR\', \'/www_dev/base-site/wp-content/plugins\' ); define( \'WP_PLUGIN_URL\', \