【问题标题】:How to create object of class inside function in function.php of wordpress如何在wordpress的function.php中创建函数内部的类对象
【发布时间】:2016-03-01 04:44:00
【问题描述】:

我正在将谷歌电子表格集成到我的项目中。我必须将表单数据保存到谷歌电子表格中。
为此,我正在使用 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');

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

【问题讨论】:

  • 请粘贴您上传 php-google-spreadsheet-client 库的位置的屏幕截图。

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


【解决方案1】:

这似乎是您的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';但同样的错误正在发生。
  • @Kango 我已经尝试使用同一个库和 my-theme 目录中的 vendor 文件夹,它工作正常,请尝试在您的主题文件夹中使用 composer dump-autoload
【解决方案2】:

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

刚才我自己在这里为您尝试过,它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    相关资源
    最近更新 更多