我正在开发一个Wordpress插件,我在根目录下的插件目录中有作曲家。我已经安装了我想要使用的所有软件包,然后在自动加载软件包后,在我的插件文件顶部的每个命名空间中加载了PHP use
命令。
PHP错误
[28-Jun-2017 10:09:37 UTC] PHP Fatal error: Class 'DrewM\MailChimp\MailChimp' not found in /home/xxx/public_html/wp-content/plugins/plugin-name/plugin-name.php on line 44
插件文件结构
/plugin-name
'- vendor/
'- .gitignore
'- composer.json
'- plugin-name.php
composer.json内容
{
"require": {
"guzzlehttp/guzzle": "^6.3",
"theiconic/php-ga-measurement-protocol": "^2.0",
"mailgun/mailgun-php": "~2.3.4",
"stripe/stripe-php": "^4.13.0",
"mailchimp/mailchimp": "^2.0",
"drewm/mailchimp-api": "^2.4"
}
}
plugin-name.php内容
<?php
/*
Plugin Name: Plugin name
[...]
*/
require 'vendor/autoload.php';
use TheIconic\Tracking\GoogleAnalytics\Analytics;
use Mailgun\Mailgun;
use Stripe\Stripe;
use \DrewM\MailChimp\MailChimp;
答案 0 :(得分:1)
解决:在plugin-name.php
,我需要更改
require 'vendor/autoload.php';
到
require plugin_dir_path(__FILE__).'vendor/autoload.php';
因为当前工作目录始终是Wordpress安装的根目录,而不是我的插件目录。
我没有在require
行上收到错误的原因是因为我在安装的根目录中有另一个类似的vendor
目录。