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

问题描述 投票:0回答:1

此函数将自定义帖子“事件”数据添加到 Salesforce 数据库中。 我已经在 WordPress 之外测试了该功能,它运行完美。 当我通过添加新事件在 Wordpress 中测试它时,不会生成错误,并且数据不会插入到 SF 数据库中。 我还通过打印 $_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');
php wordpress salesforce custom-post-type
1个回答
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' );
© www.soinside.com 2019 - 2024. All rights reserved.