【问题标题】:Using CloudConvert API in WordPress在 WordPress 中使用 CloudConvert API
【发布时间】:2019-10-23 17:30:10
【问题描述】:

我正在尝试在自定义 WordPress 插件中使用 CloudConvert API。我想做的是在激活时初始化所有 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);

https://github.com/cloudconvert/cloudconvert-php 的 PHP Wrapper 似乎是可行的方法,所以我尝试按照他们的建议使用 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 为空。

我觉得它应该很简单,但还没有找到让它工作的方法。有人可以帮忙吗?

【问题讨论】:

  • 如果将$api = new Api("---"); 部分从函数中移出,在use \CloudConvert\Api; 行下方,它是否工作正常?
  • 不确定你是如何初始化 cloudconvert API 的。如果有额外的逻辑,请也发布该代码。

标签: wordpress api cloudconvert


【解决方案1】:

刚刚在我这边进行了测试,它工作正常。看起来安装出了点问题。 以下是使其工作的步骤:

  1. 在插件根目录下创建composer.json文件,内容如下:

    {
        "name": "Example Application",
        "description": "This is an example",
        "require": {
            "cloudconvert/cloudconvert-php": "2.2.*"
        }
    }
    
  2. 在同一目录下运行composer install命令(如果你还没有安装composer,可以从here下载安装)。它会将带有依赖项的 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 的功能包装在一个类中,附加挂钩,并在需要操作时包含该文件。

【讨论】:

  • 非常感谢您的回复,运行 composer 确实解决了我遇到的任何安装问题。我仍然需要让它按照我需要的方式运行,但至少我现在实际上可以通过初始化。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
相关资源
最近更新 更多