如何在wordpress的function.php中创建函数内部类的对象

时间:2016-03-01 04:44:00

标签: php wordpress google-spreadsheet-api php-5.5

我正在我的项目中整合谷歌电子表格。我必须将表单数据保存到谷歌电子表格中 为此,我使用asimqt php-google-spreadsheet-client库。

我在网站上有单一表单,表单是使用ajax提交的。为此我在function.php中编写了函数。

初始化DefaultServiceRequest类的对象时出错。

错误:致命错误:未找到“Google \ Spreadsheet \ DefaultServiceRequest”类

require '/vendor/autoload.php';

use  Google\Spreadsheet\DefaultServiceRequest;
use  Google\Spreadsheet\ServiceRequestFactory;


function spreadsheet_feeds()
{
    $access_tok = 'xyz-token';

    $serviceRequest = new DefaultServiceRequest($access_tok); // Getting error
    ServiceRequestFactory::setInstance($serviceRequest);

    $spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
    $spreadsheetFeed = $spreadsheetService->getSpreadsheets();

}

add_action( 'wp_ajax_nopriv_spreadsheet_data', 'spreadsheet_feeds' );
add_action('wp_ajax_spreadsheet_data','spreadsheet_feeds');

为什么发生此错误的任何帮助,因为类已经包含使用“use”语句?

2 个答案:

答案 0 :(得分:0)

这似乎与vendor文件夹的位置有关。 确保文件

可以访问供应商文件夹

考虑您的文件夹层次结构

-wp-content
--themes
---your-theme
----functions.php

如果您的供应商文件夹位于your-theme/vendor,则在您的functions.php

你应该写

require 'vendor/autoload.php';

如果vendor位于WP的根目录中,请确保使用以下内容遍历根文件夹:

require __DIR__ .'/../../../../vendor/autoload.php';

答案 1 :(得分:0)

只需将require '/vendor/autoload.php';替换为require_once('vendor/autoload.php');

即可

刚才我自己在这里尝试了这个并且它有效。