WordPress - 在functions.php

时间:2017-08-01 13:08:01

标签: php wordpress

如果这真的很愚蠢/明显,我很抱歉,但这是我第一次使用WordPress中的课程。

我在自定义插件SharpSpringService.php中创建了一个名为sharpspring-form的类。为了组织目的,我将该类放在该自定义插件的类文件夹中。

我在SharpSpringService中的某个函数中引用了functions.php类但是收到错误。当我声明SharpSpringService的新实例并将帐户ID和密钥作为参数时,我收到一条消息:"预期SharpSpring,得到字符串"。我还在Chrome开发控制台中看到内部服务器500错误,这似乎是创建此类实例的结果。

我不确定为什么这些参数应该是" SharpSpring"因为它们应该是accountID和secretkey。

以下是SharpSpringService类:

    private $authError = false;
    private $accountID = null;
    private $secretKey = null;

    /**
     * SharpSpringService constructor.
     * @param $accountID SharpSpring Account ID
     * @param $secretKey SharpSpring Secret Key
     */
    public function __construct($accountID, $secretKey)
    {
        $this->accountID = $accountID;
        $this->secretKey = $secretKey;
    }

    public function hasAuthError() {
        return $this->authError;
    }

    public function makeCall($method, $params = []) {
        $requestID = session_id();
        $accountID = $this->accountID;
        $secretKey = $this->secretKey;

        $data = array(
            'method' => $method,
            'params' => $params,
            'id' => $requestID,
        );

        $queryString = http_build_query([
            'accountID' => $accountID,
            'secretKey' => $secretKey
        ]);

        $url = "http://api.sharpspring.com/pubapi/v1/?$queryString";

        $data = json_encode($data);
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Content-Length: ' . strlen($data)
        ));

        $result = curl_exec($ch);
        curl_close($ch);

        $resultObj = json_decode($result);

        if ($resultObj->error != null) {
            throw new \Exception($result->error);
        }
        return $resultObj;
    }
}

这是functions.php中引用类的函数:

function get_memberships_callback(){
    $newsListID = 550280195;
    $listName = "NewsList";
    $contactEmail = $_POST['contactemail'];
    $sharpSpringService = new SharpSpringService('[redacted]', '[redacted]'); //this is where the code chokes
    $return = [];
    if($contactEmail != null && $contactEmail !=""){
        $lists = $sharpSpringService->makeCall('getListMemberships', [
            'emailAddress' => $contactEmail,
        ]);

        if (count($lists) > 0) {
            $listArray = json_decode(json_encode($lists), true);
            $inNewsList = false;
            foreach($listArray as $list){

                if($list = $newsListID){
                    //the user is subscribed to the news list
                    $inNewsList = true;
                    $converted_result = ($inNewsList) ? 'true' : 'false';
                }
            }
        }
        $return[] = array(
            "status" => $converted_result,
            "list" => $listName
        );
        return json_encode($return);
    }
    else{
        return $return;
    }
    die();
}

1 个答案:

答案 0 :(得分:1)

为了调用大量文件,有时可以方便地定义一个常量:

define( 'MY_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
include( MY_PLUGIN_PATH . 'includes/admin-page.php');
include( MY_PLUGIN_PATH . 'includes/classes.php');