楽天セール開催中!ポイント最大11倍! セール会場へ

Pochipp│ポチップの商品をREST APIで一括編集する方法

AIとREST APIの組み合わせは非常に便利ですが、編集できないと思っていた部分も実は編集できます。

Pochipp(ポチップ)もその一つです。

たとえばポチップの商品データは、WordPressのカスタム投稿タイプ pochipps の投稿1件として保存されています。

商品の中身(ASIN・価格・画像・リンク)は、その投稿のカスタムフィールド pochipp_data にJSON文字列ひとつとして入っています。

つまり WordPress REST API で読めるし、書けるということです。

管理画面を開かずに、

  • 全商品の価格を一括で入れ直す
  • 間違った商品を指しているリンクをまとめて差し替える
  • 商品を新規登録して、記事にブロックを差し込む

がスクリプトからできます。

件数だけで所要時間は決まりません。商品の同一性確認と検証を含め、小分けに進めます。

以下はポチップの商品メタを扱う実装例です。2026年10月23日に公式配布版1.20.3の投稿タイプ・メタ登録・表示処理を再確認しました。実サイトへの商品更新、復元、全画面の動作は未検証です。公式配布・更新情報

先にそこを共有します。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

なぜREST APIなのか

ポチップの管理画面は、1件ずつ商品を検索して登録する作りです。

10件なら手で足ります。

たとえば1つの対象につき商品を2件、3件と並べるサイトなら、扱う対象の数がそのまま商品数になります。

数百件を超えたあたりから、管理画面での作業は現実的でなくなります。

さらに厄介なのが、登録済みの商品が別の商品を指している場合です。

出したかった商品実際にリンクしていた商品
シリーズ本編の1巻同シリーズの前日譚 1巻
シリーズ本編の1巻同シリーズのスピンオフ 1巻
シリーズ本編の1巻同作のノベライズ版
シリーズ本編の1巻同作の公式イラスト集

これを手作業で直す気にはなれません。

該当するものを特定して、正しい商品コードを引き直して、データを差し替える。

スクリプトで候補抽出と更新を支援できますが、巻数・版・商品種別の照合は省略できません。

ポチップの商品データはどこにあるか

構造はとてもシンプルです。

カスタム投稿タイプ: pochipps
投稿タイトル: 商品名
カスタムフィールド: pochipp_data(JSON文字列)

REST APIのエンドポイントは /wp-json/wp/v2/pochipps です。

一覧・取得・更新・作成は可能ですが、ポチップの商品投稿は固定ページに相当する権限を使います。認証した利用者が対象を編集できる必要があります。

pochipp_data を取り出すと、こういう形のJSONが入っています。

{
  "asin": "4000000004",
  "amazon_affi_url": "https://www.amazon.co.jp/dp/4000000004?tag=yourtag-22",
  "image_url": "https://example.com/sample.jpg",
  "price": "759",
  "price_at": "2026/09/08 15:38",
  "info": "著者名",
  "showPrice": true,
  "hidePrice": false
}

見た目より素直です。

このJSONを書き換えて戻せば、記事の表示がそのまま変わります。

記事側はどうなっているか

記事本文には、商品そのものではなくIDへの参照が入っています。

<!-- wp:pochipp/linkbox {"pid":8107,"isCount":true,"cvKey":"a1b2c3d4"} /-->

pid が商品投稿のIDです。

同じ商品IDを参照する記事へ変更が及びます。記事側の上書き設定やキャッシュも確認してください。

逆に言えば、記事を作り直さなくても商品だけ更新すれば済むということです。

商品データの更新頻度は、取得元の利用条件と表示の鮮度に合わせて決めます。

先に言っておく、つまずきどころ

実際につまずいた順に並べます。

詳しい対処と動くコードは後半にまとめました。

1. pochipp_data が取れない

普通に /wp-json/wp/v2/pochipps を叩いても、meta が空だったり、そもそも出てこなかったりします。

認証と編集権限、メタ登録、リクエストのcontextを確認します。contextだけで全ての問題が解決するわけではありません。

2. 部分更新はできない

pochipp_data はJSON文字列まるごとひとつのフィールドです。

「価格だけ更新」というつもりで価格だけ入れたJSONを送ると、それ以外の項目が全部消えます。

ASINも画像もリンクも消えて、商品が空になります。

「読む → 書き換える → 戻す」の順で扱います。

3. 価格を入れても表示されない

価格の有無に加え、全体設定と商品・ブロックの表示フラグが影響します。

表示を左右するフラグが別にあります。

しかもそのフラグ、名前から想像する挙動と少しずれています。

4. 楽天のリンクを入れても検索結果に飛ぶ

商品ページへの直リンクを入れたいのに、楽天ボタンが「楽天市場で”◯◯ 1巻”を検索した結果」に飛び続ける。

フィールド名に加え、全ボタンを検索結果にする設定や非表示設定も確認します。

候補を6つ試して、効くものは1つだけでした。

名前から予想できるものではありません。

なお、そこに入れるURLはアフィリエイトIDが付いていない生の商品URLです。

通常は設定済みの楽天またはもしもアフィリエイトの情報でリンクを生成します。設定がなければ同じ形にはなりません。

加工済みURLを再度加工することを避けるため、通常の商品URLを渡し、出力リンクを検証してください。

5. 価格が「¥1」になる

Amazon APIから素直に価格を取ると、たまに1円になります。

中古の出品が「買い物かごに入る側」を取っているためです。

コミックスの1巻が¥1で表示されている、といった具合です。

取得するAPI・商品・オファー条件によって異なるため、レスポンスの状態を確認します。

6. 消してはいけないもの

cvKey と isCount はクリック計測に使われています。

ここを空にしたり作り直したりすると、それまでの計測が切れます。

更新のときは触らないのが正解です。

作業前に

必ずバックアップを取ってください。 カスタムフィールドを直接書き換える作業です。

ループを1回間違えれば全商品が壊れます。

絞り込むつもりのスクリプトを条件なしで走らせて、34件を上書きしたことがあります。

ログから戻せましたが、残していなければ手詰まりでした。

  • 実行前にデータベースのバックアップを取る
  • いきなり全件ではなく、1件で試して表示を確認してから回す
  • 更新の前後をログに残す(戻せるように)

この3つは省かないでください。

ここから先(有料部分)

以下は検証環境で試すためのPython実装例です。掲載コードの構文と模擬応答を用いた基本動作は確認していますが、実サイトでの商品更新は未検証です。競合確認と更新前ログを加えていますが、サーバー側の原子的な更新ロックではありません。

Python + requests で書いていますが、やっていることは単純なHTTPリクエストなので、PHPでもJavaScriptでも同じことができます。

  • 接続(アプリケーションパスワードでの認証)
  • 全商品を読み出す
  • 1件の更新前記録・競合確認・更新後再読
  • 一括更新の骨組み(異常時に停止・結果を逐次記録)
  • 商品を新規登録して記事にブロックを差し込む
  • pochipp_data のフィールド一覧(分かっているもの全部)
  • つまずきどころ1〜6の具体的な対処

この記事だけ読みたい方は単品購入、ほかの有料記事も読みたい方は購読プランをご確認ください。

購読対象の記事・料金は、下のプラン案内で確認できます。

役に立った記事を、ブログやSNSで紹介しませんか?

紹介制度の対象記事・購読プランを購入した方は、codocで専用リンクと報酬条件を確認できます。

専用リンク経由で購入されると、設定された紹介報酬が発生します。

購読プランの紹介報酬は初回課金のみが対象です。

codocで紹介リンク・報酬条件を確認する

紹介時は、広告・PRであることが読者に分かるように明記してください。

  • URLをコピーしました!

プラグインの設定でお困りなら

プラグインの導入・カスタマイズ代行

プラグインの選定から設定、競合の解消、動作に合わせた追加実装まで承ります。1時間 ¥8,000〜(税込)。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次