2017-12-12 112 views
7

Tôi đang cố gắng sử dụng API CloudConvert trong một plugin WordPress tùy chỉnh. Những gì tôi muốn làm là khởi tạo tất cả các công cụ CloudConvert API chỉ một lần, khi kích hoạt, và sau đó có thể sử dụng nó nhiều lần khi cần thiết cho các chuyển đổi tập tin. Cụ thể, tôi muốn đặt một hình thức chuyển đổi tập tin trên một trang sản phẩm WooCommerce bằng cách sử dụng một cái móc.Sử dụng API CloudConvert trong WordPress

Đây là mã Plugin tùy chỉnh của tôi:

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

Các PHP Wrapper tại https://github.com/cloudconvert/cloudconvert-php dường như con đường để đi, vì vậy tôi cố gắng sử dụng Phar khi họ giới thiệu, cả hai như là một gói và đóng gói (như mã hiện cho thấy). Tôi không có nhiều kinh nghiệm bằng cách sử dụng PHAR vì vậy tôi mất một thời gian để tìm ra rằng nó cần phải đi vào/wp-admin cho nó được tìm thấy - Tôi không có bất kỳ may mắn thiết lập đường dẫn bao gồm để làm cho nó nhìn trong thư mục plugin của tôi.

Dù sao, cả tệp PHAR được đóng gói và các tệp autoload.php chưa được đóng gói đều có vẻ được tải trong đó plugin không ném bất kỳ lỗi nào khi kích hoạt. Thay vào đó, khi các phương pháp add_file_conversion() được chạy, tôi nhận được lỗi này:

[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 

nơi dòng 19 là lời kêu gọi 'API mới ("---")'

Tôi cũng đã cố gắng làm cho $ api toàn cầu và di chuyển khởi tạo của nó lên trực tiếp dưới câu lệnh 'use', nhưng sau đó gọi nó trong hàm add_file_conversion() ném một lỗi vì $ api là null.

Tôi cảm thấy như nó phải đơn giản như vậy nhưng chưa tìm được cách để làm cho nó hoạt động được. Ai có thể giúp tôi không?

+0

Nếu bạn di chuyển '$ api = new Api (" --- ");' tách ra khỏi hàm, bên dưới dòng 'use \ CloudConvert \ Api;', nó có hoạt động đúng không? –

+0

Không chắc chắn cách bạn khởi tạo API cloudconvert một lần. Xin vui lòng gửi mã đó cũng có, nếu có một logic thêm cho nó. –

Trả lời

5

Chỉ cần thử nghiệm trên đầu của tôi và nó hoạt động tốt. Có vẻ như đã xảy ra sự cố khi cài đặt. Dưới đây là các bước để làm theo để làm cho nó làm việc:

  1. Trong thư mục gốc plug-in tạo composer.json tập tin với nội dung sau:

    { 
        "name": "Example Application", 
        "description": "This is an example", 
        "require": { 
         "cloudconvert/cloudconvert-php": "2.2.*" 
        } 
    } 
    
  2. chạy composer install lệnh trên cùng một thư mục (trong trường hợp bạn chưa cài đặt nhà soạn nhạc, bạn có thể tải xuống và cài đặt từ here). Nó sẽ cài đặt cloudconvert với các phụ thuộc vào thư mục vendor và sẽ tạo ra vendor/autoload.php mà bạn sẽ đưa vào dự án của mình.

  3. đòi hỏi autoload.php từ plug-in của bạn:

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

Bạn có thể quấn các chức năng bạn sử dụng cloudconvert trong một lớp học, gắn móc, và bao gồm các tập tin bất cứ khi nào bạn cần để hoạt động với .

+0

Cảm ơn bạn rất nhiều vì đã trả lời, nhà soạn nhạc đang chạy đã khắc phục mọi sự cố cài đặt mà tôi có. Tôi vẫn cần phải làm cho nó chạy theo cách tôi cần, nhưng ít nhất tôi có thể thực sự có được quá khứ ngay bây giờ. Cảm ơn! –

Các vấn đề liên quan