2014-10-10 5 views
0

현재 Constant Contact PHP SDK를 WordPress 사이트에 구현하려고합니다. 이메일 코드가 작동하려면 SDK의 일부에 핵심 PHP 파일을 포함 해달라고 요청하십시오. 해당 파일을 찾을 수 없으면 PHP 오류없이 페이지가 사라집니다. 현재 사이트의 테마 (/ wp-content/themes/mytheme/src ...)의 루트에 "src"라는 9 개의 이름 지정 규칙이없는 폴더가 있습니다. 여기 Wordpress + 상수 연락처 PHP SDK 포함 경로

는 파일을 호출하는 이메일 양식 코드입니다 : 그것은 http://www.thedaileymethod.com/_main_site/wp-content/themes/dailey-method/src/Ctct/autoload.php에 있어야 할 곳에

<?php 
// require the autoloader 
require_once(TEMPLATEPATH . '/src/Ctct/autoload.php'); 

use Ctct\ConstantContact; 
use Ctct\Components\Contacts\Contact; 
use Ctct\Components\Contacts\ContactList; 
use Ctct\Components\Contacts\EmailAddress; 
use Ctct\Exceptions\CtctException; 

// Enter your Constant Contact APIKEY and ACCESS_TOKEN 
define("APIKEY", "XXXXXX"); 
define("ACCESS_TOKEN", "XXXXXX"); 

$cc = new ConstantContact(APIKEY); 

// attempt to fetch lists in the account, catching any exceptions and printing the errors to screen 
try { 
    $lists = $cc->getLists(ACCESS_TOKEN); 
} catch (CtctException $ex) { 
    foreach ($ex->getErrors() as $error) { 
     print_r($error); 
    } 
} 

// check if the form was submitted 
if (isset($_POST['email']) && strlen($_POST['email']) > 1) { 
    $action = "Getting Contact By Email Address"; 
    try { 
     // check to see if a contact with the email addess already exists in the account 
     $response = $cc->getContactByEmail(ACCESS_TOKEN, $_POST['email']); 

     // create a new contact if one does not exist 
     if (empty($response->results)) { 
      $action = "Creating Contact"; 

      $contact = new Contact(); 
      $contact->addEmail($_POST['email']); 
      $contact->addList($_POST['list']); 
      $contact->first_name = $_POST['first_name']; 
      $contact->last_name = $_POST['last_name']; 

      /* 
      * The third parameter of addContact defaults to false, but if this were set to true it would tell Constant 
      * Contact that this action is being performed by the contact themselves, and gives the ability to 
      * opt contacts back in and trigger Welcome/Change-of-interest emails. 
      * 
      * See: http://developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in 
      */ 
      $returnContact = $cc->addContact(ACCESS_TOKEN, $contact, false); 

      // update the existing contact if address already existed 
     } else { 
      $action = "Updating Contact"; 

      $contact = $response->results[0]; 
      $contact->addList($_POST['list']); 
      $contact->first_name = $_POST['first_name']; 
      $contact->last_name = $_POST['last_name']; 

      /* 
      * The third parameter of updateContact defaults to false, but if this were set to true it would tell 
      * Constant Contact that this action is being performed by the contact themselves, and gives the ability to 
      * opt contacts back in and trigger Welcome/Change-of-interest emails. 
      * 
      * See: http://developer.constantcontact.com/docs/contacts-api/contacts-index.html#opt_in 
      */ 
      $returnContact = $cc->updateContact(ACCESS_TOKEN, $contact, false); 
     } 

     // catch any exceptions thrown during the process and print the errors to screen 
    } catch (CtctException $ex) { 
     echo '<span class="label label-important">Error ' . $action . '</span>'; 
     echo '<div class="container alert-error"><pre class="failure-pre">'; 
     print_r($ex->getErrors()); 
     echo '</pre></div>'; 
     die(); 
    } 
} 
?> 

autoload.php 내가 PHP 파일에서 호출 무슨 생각이다 사용할 수 있지만 페이지에 계속 나를 위해서 깨기.

require_once 경로가 잘못 되었습니까?

편집 :

for 코드가로드되면 페이지 500 오류가 발생합니다. 양식 코드를 제거하면 오류가 사라지고 페이지가 잘로드됩니다. PHP 오류 관점에서 아무것도 로그에 아무것도.

+0

당신이 PHP 오류가 켠 않습니다 변경? require_once가 없으면 치명적인 오류를 반환합니다. – David

+0

업데이트 : PHP 폼 코드를 사이트 머리글과 템플릿 영역으로 이동하여 문제를 해결했습니다. 이제 제대로 작동합니다. 아직 헤더에서 작동하지 않는 이유는 확실하지 않지만 문제는 해결되었습니다. –

+0

오늘 아침에 일을 시작하려고 노력했습니다. ConstantContact 클래스를 사용할 수 없으며 이러한 'use'문으로 인해 왼쪽과 오른쪽으로 오류가 발생하는 경로가 무엇이든 상관 없습니다. 나는 최소한의 요구 사항을 충족 시켰고, 무엇이 잘못 될지 완전히 확신하지 못했습니다. 이 API는 가장 통합 된 기능 중 하나였습니다. – EHerman

답변

0

사용 use 키워드 문을 제거하고

$cc = new ConstantContact(APIKEY); 

$cc = new \Ctct\ConstantContact(APIKEY);