错误:调用非对象上的成员函数get_error_code()

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

我为插件编写的代码出现以下错误:

错误:致命错误:对中的非对象调用成员函数get\\u Error\\u code()/wp登录。php在线335

我尝试在wp登录中进行var\\u转储($错误)。php并返回NULL。

我的插件:(将注册用户添加到外部数据库)

 function add_user_to_SF($errors, $sanitized_user_login, $user_email ) {

 global $SF_USERNAME;
 global $SF_PASSWORD;
 global $errors;

 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) {

      $errors->add( \'demo_error\', __(\'<strong>ERROR</strong>: There is a Salesforce problem.\',\'mydomain\') );
      return $errors;
     }

 }

 add_filter( \'registration_errors\', \'add_user_to_SF\', 10, 3 );
此外,当我使用此函数测试流程时,一切都很顺利。

  function myplugin_registration_errors ($errors, $sanitized_user_login, $user_email) {
    if ( empty( $_POST[\'first_name\'] ) )
        $errors->add( \'first_name_error\', __(\'<strong>ERROR</strong>: You must include a first name.\',\'mydomain\') );

    return $errors;
}
 add_filter( \'registration_errors\', \'myplugin_registration_errors\', 10, 3 );

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

您的功能must 返回变量$errors – 即使您的逻辑中没有新的错误。

\'registration_errors\' 是一个筛选器,筛选器总是期望返回值。否则,函数将返回NULL, 这就是var_dump() 建立

因此,基本功能体应该是:

function add_user_to_SF($errors, $sanitized_user_login, $user_email ) {
    try {
    } catch (Exception $e) {
        return $errors;
    }
    return $errors; // important!
}

结束

相关推荐