オンラインストアの管理は費用がかかり、さまざまな側面を自分で操作しなければならないもの。しかしWooCommerce REST APIを使用すれば、このワークフローを簡素化し、ECプラットフォームを制御して、WooCommerceストアをプログラムで管理・拡張することができます。

シームレスに統合、自動化、そして機能の拡張を行うことで、リソースと時間が削減され、プロセスも効率化されます。さらに、柔軟な外部アプリケーションを使って、ストアの外観をカスタマイズすることも可能です。

今回は、WooCommerce REST APIを取り上げます。EC業務をプログラムで自動化し強化する方法、WooCommerceストアのシームレスな統合とカスタマイズを促進するヒントや実際のコード例をご紹介していきます。

前提条件

WooCommerce REST APIを使用するには、以下の環境が必要になります。

  • WooCommerce 3.5以上
  • WordPress 4.4以上
  • PostmanまたはInsomnia(APIのテストとインタラクション用)

WooCommerce REST APIを使用する

まずはWordPressサイトを作成し、WooCommerce内でAPI認証情報を生成します。

KinstaでWordPressサイトを作成する

WordPressサイトをまだお持ちでない場合は、MyKinstaからすぐに作成できます。

  1. MyKinstaを開き、左サイドバーの「WordPressサイト」を選択。
  2. サイトを追加する」>「新規サイト作成」をクリックし、「WordPressをインストール」を選択して「続行」をクリック。
  3. サイトの設定」画面でサイト名の入力とデータベースの所在地の選択を行い、「続行」をクリック。
  4. サイトタイトルとサイト名とサイトの管理者認証情報を入力し、使用する言語を選択したら、「WooCommerceをインストールする」にチェックを入れる。

    WooCommerceがインストールされたWordPressサイトを作成
    WooCommerceがインストールされたWordPressサイトを作成

  5. 続行」をクリックしてサイトを作成。完了するとWordPressサイト管理者にメール通知が届きます。WordPressサイト管理者のユーザー名とパスワードは安全な場所に保管してください。

WooCommerceでAPI認証情報を生成する

続いて、以下の手順でWooCommerce APIの認証情報を生成します。

  1. WordPress管理画面にログインし、「プラグイン」>「インストール済みプラグイン」を開き、WooCommerceプラグインを有効化。
  2. プラグインを有効化したら、「WooCommerce」>「設定」に移動し「高度な設定」タブを開く。
  3. REST API」をクリックする。

    APIキーの詳細ページ
    APIキーの詳細ページ

  4. キーを追加」をクリック。
  5. キーの詳細」ページで「説明」にREST APIの簡単な説明を加え、「権限」ドロップダウンで「Read/Write」を選択。

    APIキーの認証情報を生成
    APIキーの認証情報を生成

  6. API キーを生成」をクリック。これで、APIキーを使ってプログラムでオンラインストアのデータにアクセス、管理することができます。「Consumer Key」および「Consumer Secret」はAPIリクエストを行う際に使用するため、どこかに記録しておいてください。

    生成したAPIキーの認証情報
    生成したAPIキーの認証情報

WooCommerce REST APIのアーキテクチャ

WooCommerce APIは、RESTアーキテクチャをベースに構築されています。適切なメソッド(GET、POST、PUT、DELETE)でエンドポイントにリクエストを送信することで、注文、商品、顧客などのWooCommerceデータの読み取りと書き込み操作を実行することができます。

エンドポイントは、リクエストメソッドとベースURLに対してリクエストを送信することで構成されます。エンドポイントを使用すると、選択したツール(PostmanまたはInsomnia)を通じてさまざまなデータにアクセスすることができます。

商品一覧の取得

商品一覧を取得する前に、商品をいくつか追加してください。また、パーマリンク構造を「基本」以外に変更します。

WordPress管理画面のサイドバーから「設定」>「パーマリンク設定」をクリックし、パーマリンク構造を変更します。忘れずに「変更を保存」をクリックして変更を保存しましょう。これでURLエンドポイントが正常に機能します。

次にPostmanを開き、リクエストを追加します。URLセクションにhttps://<yourdomain>/wp-json/wc/v3/productsを貼り付けます。<yourdomain>は実際のWooCommerceサイトのドメインに置き換えてください。

「Authorization」タブで「Type」に「Basic Auth」を選択し、「Username」に先ほどのConsumer Key、「Password」にConsumer Secretを貼り付けます。WooCommerce REST APIへのリクエストには、常にこの認証情報が必要になります。リクエストを送信すると、ストアの商品一覧が返されます。

Postmanでストアの商品一覧を取得
Postmanでストアの商品一覧を取得

REST APIによる商品管理

商品オブジェクトには、商品のグループ化、在庫管理、価格設定を簡単に行うための属性リストがあります。例えば、作成した商品グループに新たに商品を追加する場合は、grouped_products属性の商品グループIDが必要になります(その他の属性は不要)。

在庫の管理にはmanage_stockstock_status属性を使用し、それぞれtrueまたはfalse instock onbackorder outofstockに設定されます。

既存の商品情報を追加、更新する方法を見ていきましょう。

WooCommerce APIで商品を追加する

  1. Postmanでリクエストを追加し、リクエストメソッドを「POST」に変更。エンドポイントURLは、前のセクションのものを使用します。「Body」タブで「raw」を選択し、ボディ形式に「JSON」を選択します。JSONペイロードには、商品名、商品タイプ(基本的な商品、バリエーションのある商品、グループ化された商品)、説明、概要があり、任意でカテゴリー、タグ、画像を追加することもできます。
    {
     "name": "iPhone 15 Pro Max",
     "type": "基本的な商品",
     "description": "",
     "short_description": "",
     "categories": [
     ],
     "tags": [],
     "images": []
    }
  2. リクエストを実行。商品が追加されると、レスポンスとして商品オブジェクトを受け取ります。商品のIDは次のセクションで必要になるためどこかに控えておきます。

    商品の追加
    商品の追加

WooCommerce APIで商品を編集する

追加した商品の編集方法も見ていきます。

  1. Body」タブに以下のJSONボディを貼り付けます。
    {
      "name": "iPhone 15 Pro"
    }

    この例では、商品名を「iPhone 15 Pro Max」から「iPhone 15 Pro」に変更するため、必要になるのはnameフィールドのみです。エンドポイントURLは、https://yourdomain/wp-json/wc/v3/products/<id>です。

  2. idを前のセクションで見た商品IDに置き換える。リクエストメソッドを「PUT」に変更してリクエストを実行すると、商品オブジェクトがレスポンスとして返されます。この商品名が正しければ、正常に更新されたことを意味します。

    商品を編集
    商品を編集

REST APIによる注文管理

WooCommerce REST APIは、シームレスな注文の取得と注文ステータスの更新を可能にすることで、注文処理の自動化を容易にします。プログラムで注文を取得し、日付、ステータス、顧客などの様々な条件に基づいてフィルタリングすることで、作業が効率化されます。

注文の履行や処理のさまざまな段階を反映するための注文ステータスの更新も同様で、正確な追跡と顧客とのコミュニケーションを保証することができます。さらに、返金リクエストの処理、返金の自動処理、注文ステータスの更新など、APIを通じて返金を管理することも可能です。

最近の注文を取得し、注文ステータスを完了に更新する方法を見てみます。

WooCommerce APIで最近の注文を取得する

  1. Postmanで、注文を取得するためのGETリクエストを追加。エンドポイントURLは以下のとおり。
    https:///wp-json/wc/v3/orders
  2. Params」タブで、「Key」にafter、「Value」に注文が作成された日付(今回の例では2024-03-08T00:00:00)を入力する。日付は任意で変更してください。これで指定した日付以降の注文のみに絞り込むことができます。その他の設定はデフォルトのままでOKです。
  3. リクエストを実行すると、指定した条件に一致する注文の一覧が表示される。なお、空のリストが返されないよう、事前にWooCommerceストアでいくつか注文を追加してください。

    指定された日付以降の最近の注文を取得
    指定された日付以降の最近の注文を取得

WooCommerce APIで注文ステータスを更新する

注文ステータスを更新するには、注文のIDを取得します。Postmanでリクエストを追加し、「PUT」に変更します。エンドポイントは、https://yourdomain/wp-json/wc/v3/orders/<existing-order-id>を使用します。「Body」タブで以下のJSONボディを貼り付けます。

{
  "status": "completed"
}

リクエストを実行すると、注文が完了(completed)したことを伝えるレスポンスが返されます。

注文ステータスを更新
注文ステータスを更新

顧客管理とエンゲージメント

WooCommerce REST APIを通じて、即座に新規顧客の情報を追加したり、既存の顧客情報を編集したり、購入履歴や傾向などの包括的な情報を取得したりすることもできます。

これらの情報を分析することで、パーソナライズされたマーケティング戦略を調整し、各顧客の行動に基づいてターゲットを絞り込んだ宣伝、おすすめ商品の提示、特典などを提供することができます。

きめ細かな顧客情報の管理は、顧客との信頼関係の構築、顧客満足度の向上、リピート購入の促進につながります。

WooCommerce APIで顧客情報を追加する

  1. エンドポイントhttps://<yourdomain>/wp-json/wc/v3/customersPOSTリクエストを送信(例によって認証情報の追加も忘れずに)。
  2. Body」タブで、以下のJSONオブジェクトを使って顧客情報を追加する。
    {
      "email": "[email protected]",
      "first_name": "Brian",
      "last_name": "Abraham",
      "role": "customer",
      "username": "briann.abraham",
      "billing": {
        "first_name": "Brian",
        "last_name": "Abraham",
        "company": "",
        "address_1": "969 Market",
        "address_2": "",
        "city": "San Francisco",
        "state": "CA",
        "postcode": "94103",
        "country": "US",
        "email": "[email protected]",
        "phone": "(555) 555-5555"
      },
      "shipping": {
        "first_name": "Brian",
        "last_name": "Abraham",
        "company": "",
        "address_1": "969 Market",
        "address_2": "",
        "city": "San Francisco",
        "state": "CA",
        "postcode": "94103",
        "country": "US"
      }
    }

    JSONオブジェクトには、メールアドレス、氏名、役割、ユーザー名などの基本的な顧客情報、住所、所在地、電話番号などの請求先および配送先情報が含まれています。

  3. リクエストを実行し、顧客オブジェクトを含むレスポンスを受け取る。顧客IDは次のセクションで顧客を取得する際に使用するため、どこかに控えておいてください。

WooCommerce APIでIDを使って顧客情報を取得する

追加した顧客をIDで取得する方法は以下のとおりです。

  1. GETリクエストを作成する。
  2. 同じエンドポイントhttps://<yourdomain>/wp-json/wc/v3/customers/<existing-customer-id>を使用し、取得したい顧客のIDを追加する。

WooCommerce REST APIの高度な使用例

ECサイトのリソースを管理する以外にも、CRMへの統合、在庫管理の自動化、カスタム分析やレポートなどの複雑なタスクにも、WooCommerce REST APIを使用することができます。

たとえば、REST APIを使用してWooCommerceストアを任意のCRMに統合すると、顧客情報が追加されるたびにCRMダッシュボードに即座に反映させることができます。これにより、顧客情報と注文履歴の同期管理が簡素化されます。

在庫管理の自動化については、外部の在庫管理を統合することで、在庫や商品の在庫状況をリアルタイムで把握することも。カスタムレポートや分析にも同じことを適用できます。

また意思決定、トレンドの把握、予測に役立つ俯瞰的なビューを含むレポート機能も構築可能です。

以下は、WooCommerceの顧客情報をCRMプラットフォームと同期するコード例です。

<?php
require __DIR__ . '/vendor/autoload.php';

use Automattic\WooCommerce\Client;

$woocommerce = new Client(
  'https://', // WooCommerceサイトのURL
  'consumer_key', // Consumer Key
  'consumer_secret', // Consumer Secret
    [
      'version' => 'wc/v3' // WooCommerce WP REST APIのバージョン
    ]
);

// CRM APIエンドポイントとキー
$crm_api_url = 'https://your-crm-api-url/api';
$crm_api_key = 'YOUR_CRM_API_KEY';

try {
// Woocommerceストアから顧客を取得
  $customers = $woocommerce->get('customers');

  //cURLの初期化
  $ch = curl_init();

  // cURLの初期化が成功したかどうかをチェック
  if ($ch === false) {
    throw new Exception('cURLの初期化に失敗しました');
  }

  foreach ($customers as $customer) {
    $crm_customer_data = array(
      'first_name' => $customer->first_name,
      'last_name' => $customer->last_name,
      'email' => $customer->email,
      // その他のフィールド
    );

    // cURLオプション
    curl_setopt($ch, CURLOPT_URL, $crm_api_url . '/customers');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($crm_customer_data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Authorization: Bearer ' . $crm_api_key,
      'Content-Type: application/json',
    ));

    // cURLリクエストを実行
    $crm_response = curl_exec($ch);

    // cURLエラーをチェック
    if ($crm_response === false) {
      throw new Exception('cURLエラー' . curl_error($ch));
    }

    // HTTPステータスコードをチェック
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($http_code !== 200) {
      throw new Exception('CRMとの顧客情報の同期に失敗しました: ' . $http_code);
    }

    echo '顧客情報がCRMと正常に同期されました';
  }

  curl_close($ch);

} catch (Exception $e) {
  echo 'Error: ' . $e->getMessage();
}

このPHPコードは、WooCommerce REST APIへの接続を確立し、WooCommerceストアから顧客を取得して、最後にcURLを使用してCRMに送信します。また、フローの失敗を管理するためのエラーハンドリングも組み込まれています。Composerでインストール可能なPHPライブラリautomattic/woocommerceを使用しています。

なお、このCRMは、顧客情報を任意のCRMに同期させる方法を示す目的で使用しています。

まとめ

WooCommerce REST APIは、オンラインストアのデータをプログラムで管理し、消費者のEC体験を改善し、機能を拡張するのに貢献してくれる強力なツールです。基本的なWordPressのセットアップを洗練されたプラットフォームに変身させることができます。

WordPressにWooCommerceプラグインをインストールしたら、今回ご紹介した方法でREST APIを活用してみてください。これがカスタムソリューションの基礎になります。

ECサイトにとってスピードは命。読み込み速度は顧客のお買い物体験に直接影響を与えます。WooCommerce APIは、フロントエンドから WordPressバックエンドにさまざまなリクエストを送信することができます。また同時に、バックエンドのパフォーマンスを重視し、効率的なリクエスト処理を行うことが重要です。

Kinstaのような高性能WooCommerce向けホスティングを選択することで、サイトのパフォーマンスを最大化することができます。併せて、WooCommerceストア高速化のヒントもご覧ください。

WooCommerce APIに関する経験やご意見、ご質問がありましたら、以下のコメント欄でお聞かせください。

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。