如何使用 api 管理 woocommerce 订阅?

How to manage woocommerce subscription with api?

我正在尝试使用以下代码从 php 获取所有订阅:

<?php
    require __DIR__ . '/vendor/autoload.php';
    use Automattic\WooCommerce\Client;

    $woocommerce = new Client(
            'https://www.magazzinoperfetto.it', // Your store URL
            'ck_c92b6b6452XXXXXXXXXXXXXXXXXX', 
            'cs_e3380e1c07XXXXXXXXXXXXXXXXXX', 
            [
                'wp_api' => true, // Enable the WP REST API integration
                'version' => 'wc/v2' // WooCommerce WP REST API version
            ]
    );

    print_r($woocommerce->get('subscriptions'));    
?>

如果我将 api 与 woocommerce 产品等一起使用...它的功能。但是通过订阅我收到这个错误:

致命错误:未捕获异常 'Automattic\WooCommerce\HttpClient\HttpClientException',消息为“错误:Nessun percorso fornisce una corrispondenza tra l”URL e le modalità di richiesta [rest_no_route]' in /var/www/vhosts/magazzinoperfetto.it/httpdocs/vendor/automattic/woocommerce/src/WooCommerce/HttpClient/HttpClient.php:324 堆栈跟踪:#0 /var/www/vhosts/magazzinoperfetto.it/httpdocs/vendor/automattic/woocommerce/src/WooCommerce/HttpClient/HttpClient.php(349): Automattic\WooCommerce\HttpClient\HttpClient->lookForErrors (数组)#1 /var/www/vhosts/magazzinoperfetto.it/httpdocs/vendor/automattic/woocommerce/src/WooCommerce/HttpClient/HttpClient.php(385): Automattic\WooCommerce\HttpClient\HttpClient->processResponse() #2 /var/www/vhosts/magazzinoperfetto.it/httpdocs/vendor/automattic/woocommerce/src/WooCommerce/Client。 php(82): Automattic\WooCommerce\HttpClient\HttpClient->请求('subscriptions', 'GET', 数组, 数组) #3 /var/www/vhosts/magazzinoperfetto.it/httpdocs/change-sottoscrizione.php(22): Automattic\WooCommerce\ 在 /var/www/vhosts/magazzinoperfetto.it/httpdocs/vendor/automattic/woocommerce/src/WooCommerce/HttpClient/HttpClient.php 第 324

您必须像 get_subcription 这样创建新的端点并使用此函数创建一次回调函数您可以编写获取订阅的代码,并从回调函数中 return 它。

add_action( 'rest_api_init', 'custom_api_endpoints' );
function custom_api_endpoints () {
  register_rest_route( 'wc/v2', 'get_subcription', array(
    'methods'  => 'POST',
    'callback' => 'custom_subscription_endpoint_handler'
  ) );
}
function custom_subscription_endpoint_handler () {
    return $woocommerce->get('subscriptions');
}