Uso de la API de CloudConvert en WordPress

3 minutos de lectura

avatar de usuario
Jo Batkin

Estoy tratando de usar la API de CloudConvert dentro de un complemento personalizado de WordPress. Lo que me gustaría hacer es inicializar todas las cosas de la API de CloudConvert solo una vez, en la activación, y luego poder usarlas varias veces según sea necesario para las conversiones de archivos. Específicamente, quiero colocar un formulario de conversión de archivos en una página de producto de WooCommerce usando un gancho.

Aquí está mi código de complemento personalizado:

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);

El envoltorio de PHP en https://github.com/cloudconvert/cloudconvert-php parecía el camino a seguir, así que intenté usar PHAR como recomiendan, tanto como un paquete como sin empaquetar (como muestra el código actualmente). No tengo mucha experiencia en el uso de PHAR, por lo que me tomó un tiempo darme cuenta de que debe ir a /wp-admin para que se encuentre. No tuve suerte configurando la ruta de inclusión para que se vea. en mi directorio de complementos.

De todos modos, tanto los archivos PHAR empaquetados como los archivos autoload.php desempaquetados parecen cargarse bien, ya que el complemento no arroja ningún error al activarse. En cambio, cuando se ejecuta el método add_file_conversion(), aparece este 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

donde la línea 19 es la llamada a ‘nueva API (“—“)’

También intenté hacer $api global y mover su inicialización directamente debajo de la declaración ‘use’, pero luego llamarlo dentro de la función add_file_conversion() arroja un error porque $api es nulo.

Siento que debería ser tan simple, pero aún no he encontrado una manera de hacerlo funcionar. ¿Alguien puede ayudar por favor?

  • si te mueves $api = new Api("---"); parte fuera de la función, debajo de la use \CloudConvert\Api; línea, ¿está funcionando correctamente?

    – Avag Sargsián

    1 de enero de 2018 a las 14:49

  • No estoy seguro de cómo está inicializando la API de cloudconvert una vez. Publique ese código también, si hay una lógica adicional para él.

    – Avag Sargsián

    1 de enero de 2018 a las 14:54

Acabo de probar en mi extremo, y está funcionando bien. Parece que algo salió mal con la instalación. Estos son los pasos a seguir para que funcione:

  1. En el directorio raíz del complemento, cree composer.json archivo con el siguiente contenido:

    {
        "name": "Example Application",
        "description": "This is an example",
        "require": {
            "cloudconvert/cloudconvert-php": "2.2.*"
        }
    }
    
  2. correr composer install comando en el mismo directorio (en caso de que no haya instalado Composer, puede descargarlo e instalarlo desde aquí). Instalará cloudconvert con dependencias en el vendor directorio, y creará vendor/autoload.php que incluirás en tu proyecto.

  3. requiere autoload.php de su complemento:

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

Puede envolver la funcionalidad que usa cloudconvert en una clase, adjuntar ganchos e incluir ese archivo siempre que necesite operar.

  • Muchas gracias por la respuesta, ejecutar Composer solucionó los problemas de instalación que tuve. Todavía necesito que funcione como lo necesito, pero al menos ahora puedo superar la inicialización. ¡Gracias!

    – Jo Batkin

    20 de enero de 2018 a las 8:08

¿Ha sido útil esta solución?