I am trying to use the CloudConvert API within a custom WordPress plugin. What I'd like to do is initialise all of the CloudConvert API stuff just once, on activation, and then be able to use it multiple times as needed for file conversions. Specifically, I want to put a file conversion form on a WooCommerce product page using a hook.
Here's my custom plugin code:
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);
The PHP Wrapper at https://github.com/cloudconvert/cloudconvert-php seemed the way to go, so I tried using the PHAR as they recommend, both as a package and unpackaged (as the code shows currently). I don't have much experience using PHARs so it took me a while to figure out that it needs to go in /wp-admin for it to be found - I didn't have any luck setting the include path to get it to look in my plugin directory.
Anyway, both the packaged PHAR and unpacked autoload.php files seem to load ok in that the plugin doesn't throw any errors on activation. Instead, when the add_file_conversion() method is run, I get this error:
[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
where line 19 is the call to 'new API("---")'
I also tried making $api global and moving its initialisation up directly under the 'use' statement, but then calling it within the add_file_conversion() function throws an error because $api is null.
I feel like it should be so simple but have not found a way to get it working yet. Can anyone help please?