2017-06-28 114 views
1

我正在開發一個Wordpress插件,我的作曲家在我的插件目錄下的根目錄下。我已經安裝了所有我想使用的軟件包,然後在自動加載軟件包之後,我的PHP use命令將加載到我的插件文件頂部的每個命名空間中。WordPress插件:找不到作曲家類

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" 
    } 
} 

插件-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; 

回答

1

解決:在plugin-name.php,我需要改變

require 'vendor/autoload.php'; 

require plugin_dir_path(__FILE__).'vendor/autoload.php'; 

因爲當前的工作目錄始終是WordPress安裝的根,而不是在我的插件目錄。

我在require行沒有收到錯誤的原因是因爲我在安裝的根目錄中有另一個類似的vendor目錄。