Использование CloudConvert API в WordPress
Я пытаюсь использовать CloudConvert API в пользовательском плагине WordPress. То, что я хотел бы сделать, это инициализировать все компоненты CloudConvert API только один раз при активации, а затем иметь возможность использовать его несколько раз по мере необходимости для преобразования файлов. В частности, я хочу поместить форму преобразования файла на страницу продукта WooCommerce, используя хук.
Вот мой собственный код плагина:
require __DIR__ . '/vendor/autoload.php';
use \CloudConvert\Api;
function add_file_conversion()
{
$api = new Api("---");
$psd_process = $api->createProcess([
"inputformat" => "psd",
"outputformat" => "png",
]);
$psd_process->start([
"input" => "upload",
"outputformat" => "png",
"download" => true
]);
?>
<form id="files-convert-form" action="<?php echo $psd_process->upload->url; ?>">
<label>If you have a PSD or PDF file, please convert it </label>
<input type="file" name="myfile" id="files-convert" autocomplete="off"/>
<button type="button" class="btn btn-primary" id="action-convert">Convert</button>
</form>
<?php
}
add_action('woocommerce_single_product_summary', 'add_file_conversion', 25);
PHP Wrapper по адресу https://github.com/cloudconvert/cloudconvert-php показался мне подходящим, поэтому я попытался использовать PHAR, как они рекомендуют, как в виде пакета, так и без упаковки (как показывает код в настоящее время). У меня нет большого опыта использования PHAR, поэтому мне потребовалось некоторое время, чтобы выяснить, что нужно найти в / wp-admin, чтобы найти его - мне не повезло, установив путь включения, чтобы он выглядел в моем каталоге плагинов.
В любом случае, как упакованные файлы PHAR, так и распакованные файлы autoload.php загружаются нормально, поскольку плагин не выдает никаких ошибок при активации. Вместо этого при запуске метода add_file_conversion() я получаю эту ошибку:
[12-Dec-2017 11:17:58 UTC] PHP Fatal error: Class 'CloudConvert\Api' not found in /.../wp-content/plugins/cloudconvert-puzzlepic/cloudconvert-puzzlepic.php on line 19
где строка 19 - это вызов 'new API("---")'
Я также попытался сделать глобальный $api и переместить его инициализацию прямо под оператором 'use', но затем вызвав его в функции add_file_conversion(), выдает ошибку, потому что $api имеет значение null.
Я чувствую, что все должно быть так просто, но пока не нашел способ заставить его работать. Может кто-нибудь помочь, пожалуйста?
1 ответ
Только что проверил на моем конце, и работает нормально. Похоже, что-то пошло не так с установкой. Вот шаги, чтобы следовать, чтобы заставить это работать:
В корневом каталоге плагина создайте
composer.json
файл со следующим содержанием:{ "name": "Example Application", "description": "This is an example", "require": { "cloudconvert/cloudconvert-php": "2.2.*" } }
бежать
composer install
команда в том же каталоге (если вы еще не установили composer, вы можете скачать и установить отсюда). Это установит cloudconvert с зависимостями вvendor
каталог, и создастvendor/autoload.php
который вы включите в свой проект.требуется autoload.php от вашего плагина:
require __DIR__ . '/vendor/autoload.php'; use \CloudConvert\Api; $api = new Api("your_api_key"); var_dump($api); exit;
Вы можете обернуть функциональность, которую вы используете cloudconvert, в класс, прикрепить хуки и включать этот файл всякий раз, когда вам нужно работать.