Использование 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 ответ

Решение

Только что проверил на моем конце, и работает нормально. Похоже, что-то пошло не так с установкой. Вот шаги, чтобы следовать, чтобы заставить это работать:

  1. В корневом каталоге плагина создайте composer.json файл со следующим содержанием:

    {
        "name": "Example Application",
        "description": "This is an example",
        "require": {
            "cloudconvert/cloudconvert-php": "2.2.*"
        }
    }
    
  2. бежать composer install команда в том же каталоге (если вы еще не установили composer, вы можете скачать и установить отсюда). Это установит cloudconvert с зависимостями в vendor каталог, и создаст vendor/autoload.php который вы включите в свой проект.

  3. требуется autoload.php от вашего плагина:

    require __DIR__ . '/vendor/autoload.php';
    use \CloudConvert\Api;
    $api = new Api("your_api_key");
    var_dump($api); exit;
    

Вы можете обернуть функциональность, которую вы используете cloudconvert, в класс, прикрепить хуки и включать этот файл всякий раз, когда вам нужно работать.

Другие вопросы по тегам