如何在 function.php 的 wordpress 函数中创建 class 的对象

How to create object of class inside function in function.php of wordpress

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

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

初始化 DefaultServiceRequest 对象时出错 class。

错误: 致命错误:Class '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');

为什么会出现此错误,因为 class 已经包含使用 "use" 语句,有什么帮助吗?

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

可以访问供应商文件夹

考虑到您的文件夹层次结构

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

如果您在 your-theme/vendor 中有供应商文件夹,那么在您的 functions.php

你应该写

require 'vendor/autoload.php';

如果 vendor 在 WP 的根目录中,请确保使用类似以下内容的方法返回根文件夹:

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

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

刚才我在这里亲自为你试过这个,它有效。