我正试图在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 install
或composer require emilianozublena/sheetsu-php
的命令行安装了该包。
不能在函数中使用use
php关键字。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');