4

次のコードを使用して、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'));    
?>

woocommerce製品などでAPIを使用すると...機能的です。しかし、サブスクリプションを使用すると、次のエラーが表示されます。

致命的なエラー: /var/www/vhosts/magazzinoperfetto.it/httpdocs 内のメッセージ「エラー: Nessun percorso fornisce una corrispondenza tra l'URL e le modalità di richiesta [rest_no_route]」を含むキャッチされない例外「Automattic\WooCommerce\HttpClient\HttpClientException」 /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(Array) #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->request('subscriptions', 'GET', Array, Array) #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 行目

4

1 に答える 1

3

次のような新しいエンドポイントをget_subcription作成し、この関数を使用して一度コールバック関数を作成する必要があります。取得サブスクリプションのコードを記述して、コールバック関数から返すことができます。

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');
}
于 2017-10-11T12:55:03.473 に答える