Ich versuche, die CloudConvert-API in einem benutzerdefinierten WordPress-Plugin zu verwenden. Ich möchte das gesamte CloudConvert-API-Zeug nur einmal bei der Aktivierung initialisieren und es dann bei Bedarf mehrmals für Dateikonvertierungen verwenden können. Insbesondere möchte ich mithilfe eines Hooks ein Dateikonvertierungsformular auf einer WooCommerce-Produktseite platzieren.
Hier ist mein benutzerdefinierter 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);
Der PHP-Wrapper unter https://github.com/cloudconvert/cloudconvert-php schien der Weg zu gehen, also habe ich versucht, das PHAR so zu verwenden, wie sie es empfehlen, sowohl als Paket als auch unverpackt (wie der Code derzeit zeigt). Ich habe nicht viel Erfahrung mit PHARs, also hat es eine Weile gedauert, bis ich herausgefunden habe, dass es in /wp-admin gehen muss, damit es gefunden wird – ich hatte kein Glück, den Include-Pfad festzulegen, damit es aussieht in meinem Plugin-Verzeichnis.
Wie auch immer, sowohl die gepackte PHAR- als auch die entpackte autoload.php-Datei scheinen in Ordnung zu laden, da das Plugin bei der Aktivierung keine Fehler auslöst. Stattdessen erhalte ich beim Ausführen der Methode add_file_conversion() diesen Fehler:
[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
wo Zeile 19 der Aufruf von ‘new API(“—“)’ ist
Ich habe auch versucht, $api global zu machen und seine Initialisierung direkt unter die ‘use’-Anweisung zu verschieben, aber dann wird beim Aufrufen innerhalb der Funktion add_file_conversion() ein Fehler ausgegeben, weil $api null ist.
Ich denke, es sollte so einfach sein, aber ich habe noch keinen Weg gefunden, es zum Laufen zu bringen. Kann jemand bitte helfen?
Wenn Sie sich bewegen
$api = new Api("---");
Teil aus der Funktion, unterhalb deruse \CloudConvert\Api;
Linie, funktioniert es richtig?– Avag Sargsjan
1. Januar 2018 um 14:49 Uhr
Sie sind sich nicht sicher, wie Sie die Cloudconvert-API einmal initialisieren. Bitte posten Sie diesen Code auch, wenn es eine zusätzliche Logik dafür gibt.
– Avag Sargsjan
1. Januar 2018 um 14:54 Uhr