在functions.php中使用Composer类



我正试图在Wordpress网站上添加一个快捷代码,从谷歌电子表格中提取一段数据并将其放入页面。为此,我尝试使用Sheetsu。Sheetsu的php库通过Composer进行管理。

我有一段独立的代码,但当我把它放在functions.php中时,就像这样。。。

function do_sheetsu() {
require('vendor/autoload.php');
use SheetsuSheetsu;
$sheetsu = new Sheetsu(['sheetId' => '8b297aa81110']);
$response = $sheetsu->search(['id' => '2.05.1']);
$collection = $response->getCollection();
echo $collection->get(0)->answer;
}
add_shortcode('sheetsu','do_sheetsu');

它清空了我的网站。如果我注释掉use SheetsuSheetsu;行,我的网站会回来,但我没有得到任何输出,并且错误"PHP致命错误:找不到类'Sheetsu'",我认为这非常有道理。

显然,我知道足够多的php,可以破解一些东西,而我对Composer的了解主要来自于对Flarum的一点了解。

我确信我在这里遗漏了一些明显的东西,我猜是涉及命名空间声明之类的,但我无法将这些部分放在一起。

我也在怀疑地查看我的composer.json文件——有些地方似乎不对劲,但我不确定该修复什么。

记录在案,我的composer.json、composer.lock和vendor文件夹都在我的主题文件夹中,带有functions.php

{
"require": {
"emilianozublena/sheetsu-php": "^0.0.6"
}
}

我不确定它应该。

但更令人不安的是,找到了一种绕过use SheetsuSheetsu行的方法,这似乎完全打破了Wordpress。。。

谢谢你的帮助!

我假设您已经使用运行composer installcomposer require emilianozublena/sheetsu-php的命令行安装了该包。

不能在函数中使用usephp关键字。use关键字必须在文件的最外层作用域(全局作用域)中声明。有关更多详细信息,请参阅

因此,在这种情况下,您可以在实例化类的同时链接命名空间。在我们的案例中,new Sheetsu(['sheetId' => '8b297aa81110'])变成了new SheetsuSheetsu(['sheetId' => '8b297aa81110']);

试试下面的代码

function do_sheetsu() {
require('vendor/autoload.php');
$sheetsu = new SheetsuSheetsu(['sheetId' => '8b297aa81110']);
$response = $sheetsu->search(['id' => '2.05.1']);
$collection = $response->getCollection();
echo $collection->get(0)->answer;
}
add_shortcode('sheetsu','do_sheetsu');

相关内容

  • 没有找到相关文章

最新更新