質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
WooCommerce

WooCommerceは、2011年にリリースされたWordPressのためのECプラグインです。ECサイトに必要な一連の機能を簡単に導入できる上、柔軟なカスタマイズをすることも可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

[Laravel][WooCommerce]WooCommerceのAPIから注文情報を全て取得したい

izumin123
izumin123

総合スコア16

WooCommerce

WooCommerceは、2011年にリリースされたWordPressのためのECプラグインです。ECサイトに必要な一連の機能を簡単に導入できる上、柔軟なカスタマイズをすることも可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0リアクション

0クリップ

155閲覧

投稿2022/10/06 05:12

前提

WooCommerceのAPIから取ってきた情報を集計し表示するwebアプリをLaravelで作っています。

実現したいこと

理想のようにWooCommerceのAPIから注文情報を全て取得したいです。

発生している問題

最近の10件しか取得できていません。

該当のソースコード

WooController.php

php

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Codexshaper\WooCommerce\Facades\Order; class WooController extends Controller { public function get_api_orders(){ $orders = Order::all(); echo "注文数:" . count($orders) . "<br>"; foreach($orders as $order){ echo "order_id:" . $order->id . "<br>"; } } }

Laravelには「Laravel WooCommerce」というライブラリをインストールし、以下のところで利用しています。

php

use Codexshaper\WooCommerce\Facades\Order;

参考:https://codexshaper.github.io/docs/laravel-woocommerce/

実際の結果

注文数:10
order_id:44
order_id:43
order_id:42
order_id:41
order_id:40
order_id:39
order_id:37
order_id:35
order_id:34
order_id:32

理想

注文数:20
order_id:44
order_id:43
order_id:42
order_id:41
order_id:40
order_id:39
order_id:37
order_id:35
order_id:34
order_id:32
order_id:28
order_id:27
order_id:25
order_id:24
order_id:23
order_id:21
order_id:19
order_id:18
order_id:17
order_id:13

※テスト用のWooCommerceには20個の注文があります。

その他情報

WooCommerceのAPI Reference
https://woocommerce.github.io/woocommerce-rest-api-docs/#list-all-orders

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

AbeTakashi

2022/10/06 06:09

WooCommerceのリファレンスを見るとper_pageというパラメーターの説明に「Maximum number of items to be returned in result set. Default is 10.」と書いてありますから、それが影響してそうですよね。この手のAPIは、サーバに負荷をかけないように、取れるデータの個数の制限がかかってることが多いです。 なので、laravel-woocommerceのOrderのソースコードを直接見るなどして、その辺がしっかり対応されるか確認したらどうでしょうか?(ぱっと見た感じ、laravel-woocommerceのドキュメント内には書かれてないような気がしました。しっかり読み込んではないのので書かれてたらすいません) どちらにせよ、データの件数にもよりますが、すべてのデータを取得しようとすると、オフセットを指定するなどしてAPIを複数回叩くなりしないといけない可能性が高い気がします。
izumin123

2022/10/06 06:15

自分もlaravel-woocommerceのドキュメント等をみた感じは、おそらく書かれていなかったと思います。 laravel-woocommerceのOrderのコードがどこにあるかがいまいち探しきれてないですが、もう少し探してみます。
izumin123

2022/10/06 07:09

途中ですが、以下のような感じで、パラメータを指定することができ、情報を取得できました。 $orders = Order::all(["per_page" => 10, "page" => 1, "order" => "asc"]); パラメータの意味がわかっていなかったので、コメントで使い方がわかりました。 ありがとうございます! あとは、注文がなくなるまで、複数回叩くようにしたいと思います。
AbeTakashi

2022/10/06 07:36

解決できそうで良かったです。API叩く回数あまり増えないように、ある程度はキャッシュなりローカルに情報保存するなりする仕組みなども入れた方がよさそうですね。自己解決として頂ければと思います。
izumin123

2022/10/06 07:45

アドバイスありがとうございます! ローカルのDBは既に用意してあるので、API取得時にDBに保存し、ページに表示する時にはDBから取得するようにしたいと思います。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

WooCommerce

WooCommerceは、2011年にリリースされたWordPressのためのECプラグインです。ECサイトに必要な一連の機能を簡単に導入できる上、柔軟なカスタマイズをすることも可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。