将wordpress自定义帖子类型数据添加到外部数据库

时间:2013-04-08 23:55:37

标签: salesforce wordpress custom-post-type

此功能将自定义帖子'事件'数据添加到Salesforce数据库中。我已经在Wordpress之外测试了它的功能,它运行得很完美。当我通过添加新事件在Wordpress中测试它时,不会生成错误并且数据不会插入到SF db中。我也通过打印$ _POST测试了这一点,并看到正在收集数据。如何让这个显示器出现一些错误,以便我可以解决这个问题呢?

function add_campaign_to_SF( $post_id) {
    global $SF_USERNAME;
    global $SF_PASSWORD;

    if ('event' == $_POST['post-type']) {
        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->Name = get_the_title( $post_id );
              $sObject->StartDate = date("Y-m-d", strtotime($_POST["events_startdate"]));
              $sObject->EndDate = date("Y-m-d", strtotime($_POST["events_enddate"]));
              $sObject->IsActive = '1';

              $createResponse = $mySforceConnection->create(array($sObject), 'Campaign');

              $ids = array();
                    foreach ($createResponse as $createResult) {
                        error_log($createResult);
                        array_push($ids, $createResult->id);
                    }

                } catch (Exception $e) {
                        error_log($mySforceConnection->getLastRequest());
                        error_log($e->faultstring);
                        die;
                    }
    }
 }

 add_action( 'save_post', 'add_campaign_to_SF');

1 个答案:

答案 0 :(得分:1)

我会使用get_post_type()来检查“事件”帖子。使用error_log()写入PHP错误日志以进行其他调试 - 检查Salesforce登录的状态等。

请注意,save_post会在保存帖子(创建或更新)的每个时间运行,因此您可能需要在创建之前进行一些额外的检查(例如设置元值)在Salesforce中使用新的Campaign,否则最终会出现重复项。

function add_campaign_to_SF( $post_id ) {
    $debug = true;
    if ($debug) error_log("Running save_post function add_campaign_to_SF( $post_id )");
    if ( 'event' == get_post_type( $post_id ) ){
        if ($debug) error_log("The post type is 'event'");
        if ( false === get_post_meta( $post_id, 'sfdc_id', true ) ){
            if ($debug) error_log("There is no meta value for  'sfdc_id'");
            // add to Salesforce, get back the ID of the new Campaign object
            if ($debug) error_log("The new object ID is $sfdc_id");
            update_post_meta( $post_id, 'sfdc_id', $sfdc_id );
        }
    }
}
add_action( 'save_post', 'add_campaign_to_SF' );